You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2021/03/15 20:19:40 UTC
[royale-compiler] branch develop updated: playerglobalc: option to
compile airglobal.swc or playerglobal.swc
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/develop by this push:
new 48e8753 playerglobalc: option to compile airglobal.swc or playerglobal.swc
48e8753 is described below
commit 48e87536148049eaddc2829446ea40c158d6bfd4
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Mon Mar 15 13:19:16 2021 -0700
playerglobalc: option to compile airglobal.swc or playerglobal.swc
---
.../royale/compiler/clients/PLAYERGLOBALC.java | 54 ++++++++++++++++++----
.../clients/PlayerglobalcConfiguration.java | 15 ++++++
2 files changed, 60 insertions(+), 9 deletions(-)
diff --git a/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java b/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java
index 6a0d931..1887498 100644
--- a/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java
+++ b/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java
@@ -329,7 +329,11 @@ class PLAYERGLOBALC implements FlexTool {
}
boolean isAIROnly = isAIROnly(apiClassifierElement.element("prolog"));
- boolean isVector = className.startsWith("Vector$");
+ if(isAIROnly && !configuration.getAir() && !fullyQualifiedName.equals("flash.display.NativeMenu") && !fullyQualifiedName.equals("flash.display.NativeMenuItem")) {
+ return;
+ }
+
+ boolean isVector = fullyQualifiedName.startsWith("__AS3__.vec.Vector$");
Set<String> importFullyQualifiedNames = new HashSet<String>();
collectImports(apiClassifierElement, packageName, importFullyQualifiedNames);
@@ -428,10 +432,10 @@ class PLAYERGLOBALC implements FlexTool {
classBuilder.append("{");
classBuilder.append("\n");
if (apiConstructorElements.size() > 0) {
- parseConstructor(apiConstructorElements, className, classBuilder);
+ parseConstructor(apiConstructorElements, fullyQualifiedName, classBuilder);
}
for (Element apiOperationElement : apiOperationElements) {
- parseFunction(apiOperationElement, className, false, classBuilder);
+ parseFunction(apiOperationElement, fullyQualifiedName, false, classBuilder);
}
for (Element apiValueElement : apiValueElements) {
parseVariable(apiValueElement, false, classBuilder);
@@ -461,6 +465,9 @@ class PLAYERGLOBALC implements FlexTool {
}
boolean isAIROnly = isAIROnly(apiClassifierElement.element("prolog"));
+ if(isAIROnly && !configuration.getAir()) {
+ return;
+ }
Set<String> importFullyQualifiedNames = new HashSet<String>();
collectImports(apiClassifierElement, packageName, importFullyQualifiedNames);
@@ -556,11 +563,14 @@ class PLAYERGLOBALC implements FlexTool {
fullyQualifiedName = packageName + "." + parts[1];
}
+ boolean isAIROnly = isAIROnly(apiOperationElement.element("prolog"));
+ if(isAIROnly && !configuration.getAir()) {
+ return;
+ }
+
Set<String> importFullyQualifiedNames = new HashSet<String>();
collectImports(apiOperationElement, packageName, importFullyQualifiedNames);
- boolean isAIROnly = isAIROnly(apiOperationElement.element("prolog"));
-
StringBuilder functionBuilder = new StringBuilder();
functionBuilder.append("// generated from: ");
functionBuilder.append(currentFile.getName());
@@ -602,11 +612,14 @@ class PLAYERGLOBALC implements FlexTool {
return;
}
+ boolean isAIROnly = isAIROnly(apiValueElement.element("prolog"));
+ if(isAIROnly && !configuration.getAir()) {
+ return;
+ }
+
Set<String> importFullyQualifiedNames = new HashSet<String>();
collectImports(apiValueElement, packageName, importFullyQualifiedNames);
- boolean isAIROnly = isAIROnly(apiValueElement.element("prolog"));
-
StringBuilder variableBuilder = new StringBuilder();
variableBuilder.append("// generated from: ");
variableBuilder.append(currentFile.getName());
@@ -629,6 +642,11 @@ class PLAYERGLOBALC implements FlexTool {
private void parseVariable(Element apiValueElement, boolean forInterface, StringBuilder variableBuilder)
throws Exception {
+ boolean isAIROnly = isAIROnly(apiValueElement.element("prolog"));
+ if(isAIROnly && !configuration.getAir()) {
+ return;
+ }
+
String variableName = apiValueElement.element("apiName").getTextTrim();
boolean isGetter = false;
@@ -772,6 +790,11 @@ class PLAYERGLOBALC implements FlexTool {
private void parseFunction(Element apiOperationElement, String contextClassName, boolean forInterface,
StringBuilder functionBuilder) throws Exception {
+ boolean isAIROnly = isAIROnly(apiOperationElement.element("prolog"));
+ if(isAIROnly && !configuration.getAir()) {
+ return;
+ }
+
String functionName = apiOperationElement.element("apiName").getTextTrim();
boolean isStatic = false;
@@ -791,6 +814,9 @@ class PLAYERGLOBALC implements FlexTool {
Element apiIsOverrideElement = apiOperationDefElement.element("apiIsOverride");
if (apiIsOverrideElement != null) {
isOverride = true;
+ if(!configuration.getAir() && "clone".equals(functionName) && "flash.ui.ContextMenuItem".equals(contextClassName)) {
+ isOverride = false;
+ }
}
Element apiReturnElement = apiOperationDefElement.element("apiReturn");
@@ -852,7 +878,7 @@ class PLAYERGLOBALC implements FlexTool {
private void parseConstructor(List<Element> apiConstructorElements, String contextClassName,
StringBuilder functionBuilder) throws Exception {
- String constructorName = contextClassName;
+ String constructorName = null;
String access = null;
List<Element> apiParamElements = null;
@@ -1044,7 +1070,7 @@ class PLAYERGLOBALC implements FlexTool {
String[] parts = apiTypeValue.split("\\$");
String vectorItemType = parts[1];
vectorItemType = vectorItemType.replace(":", ".");
- if (contextClassName != null && contextClassName.startsWith("Vector$") && vectorItemType.equals("T")) {
+ if (contextClassName != null && contextClassName.startsWith("__AS3__.vec.Vector$") && vectorItemType.equals("T")) {
return contextClassName;
}
return "Vector.<" + vectorItemType + ">";
@@ -1206,6 +1232,11 @@ class PLAYERGLOBALC implements FlexTool {
}
}
if ("apiOperation".equals(elementName)) {
+ boolean isAIROnly = isAIROnly(element.element("prolog"));
+ if(isAIROnly && !configuration.getAir()) {
+ return;
+ }
+
String functionName = element.element("apiName").getTextTrim();
Element apiOperationDetailElement = element.element("apiOperationDetail");
@@ -1284,6 +1315,11 @@ class PLAYERGLOBALC implements FlexTool {
}
}
if ("apiValue".equals(elementName)) {
+ boolean isAIROnly = isAIROnly(element.element("prolog"));
+ if(isAIROnly && !configuration.getAir()) {
+ return;
+ }
+
String variableName = element.element("apiName").getTextTrim();
Element apiValueDetailElement = element.element("apiValueDetail");
diff --git a/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PlayerglobalcConfiguration.java b/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PlayerglobalcConfiguration.java
index b08ea19..4df4cb9 100644
--- a/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PlayerglobalcConfiguration.java
+++ b/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PlayerglobalcConfiguration.java
@@ -68,4 +68,19 @@ public class PlayerglobalcConfiguration extends Configuration
assertThatAllPathsAreDirectories(Arrays.asList(filename), cfgval);
this.asdocRoot = new File(FilenameNormalization.normalize(filename));
}
+
+ private boolean air = false;
+
+ public boolean getAir()
+ {
+ return air;
+ }
+
+ @Config
+ @Mapping("air")
+ public void setAir(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ air = value;
+ }
}