Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/IExtendedScannerInfoDeserializer.java')
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/scannerinfo/IExtendedScannerInfoDeserializer.java62
1 files changed, 62 insertions, 0 deletions
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;
+ }
+
+}

Back to the top