]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/environment/filter/NamespaceFilters.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / environment / filter / NamespaceFilters.java
index 2749ae3050b271c92a6398ede78058d8e3b8002d..4ca25de53f7873d6910b0549dd47dd3caf9e6ade 100644 (file)
-package org.simantics.scl.compiler.environment.filter;\r
-\r
-import org.simantics.scl.compiler.elaboration.expressions.EVar;\r
-import org.simantics.scl.compiler.module.ImportDeclaration.ImportSpec;\r
-\r
-import gnu.trove.set.hash.THashSet;\r
-\r
-public class NamespaceFilters {\r
-    public static NamespaceFilter createFromSpec(ImportSpec spec) {\r
-        if(spec.hiding) {\r
-            if(spec.values.length == 0)\r
-                return AcceptAllNamespaceFilter.INSTANCE;\r
-            THashSet<String> names = new THashSet<String>(spec.values.length);\r
-            for(EVar value : spec.values)\r
-                names.add(value.name);\r
-            return new NegativeNamespaceFilter(names);\r
-        }\r
-        else {\r
-            THashSet<String> names = new THashSet<String>(spec.values.length);\r
-            for(EVar value : spec.values)\r
-                names.add(value.name);\r
-            return new PositiveNamespaceFilter(names);\r
-        }\r
-    }\r
-    \r
-    public static NamespaceFilter union(NamespaceFilter a, NamespaceFilter b) {\r
-        if(a == AcceptAllNamespaceFilter.INSTANCE || b == AcceptAllNamespaceFilter.INSTANCE)\r
-            return AcceptAllNamespaceFilter.INSTANCE;\r
-        if(a instanceof PositiveNamespaceFilter) {\r
-            if(b instanceof PositiveNamespaceFilter)\r
-                return unionImpl((PositiveNamespaceFilter)a, (PositiveNamespaceFilter)b);\r
-            else if(b instanceof NegativeNamespaceFilter)\r
-                return unionImpl((NegativeNamespaceFilter)b, (PositiveNamespaceFilter)a);\r
-        }\r
-        else if(a instanceof NegativeNamespaceFilter) {\r
-            if(b instanceof PositiveNamespaceFilter)\r
-                return unionImpl((NegativeNamespaceFilter)a, (PositiveNamespaceFilter)b);\r
-            else if(b instanceof NegativeNamespaceFilter)\r
-                return unionImpl((NegativeNamespaceFilter)a, (NegativeNamespaceFilter)b);\r
-        }\r
-        return new NamespaceFilterUnion(a, b);\r
-    }\r
-    \r
-    private static NamespaceFilter unionImpl(PositiveNamespaceFilter a, PositiveNamespaceFilter b) {\r
-        THashSet<String> includedValues = new THashSet<String>(a.includedValues.size() + b.includedValues.size());\r
-        includedValues.addAll(a.includedValues);\r
-        includedValues.addAll(b.includedValues);\r
-        if(includedValues.size() == a.includedValues.size())\r
-            return a;\r
-        if(includedValues.size() == b.includedValues.size())\r
-            return b;\r
-        return new PositiveNamespaceFilter(includedValues);\r
-    }\r
-    \r
-    private static NamespaceFilter unionImpl(NegativeNamespaceFilter a, PositiveNamespaceFilter b) {\r
-        THashSet<String> excludedValues = new THashSet<String>(a.excludedValues);\r
-        excludedValues.removeAll(b.includedValues);\r
-        if(excludedValues.size() == a.excludedValues.size())\r
-            return a;\r
-        if(excludedValues.isEmpty())\r
-            return AcceptAllNamespaceFilter.INSTANCE;\r
-        return new NegativeNamespaceFilter(excludedValues);\r
-    }\r
-    \r
-    private static NamespaceFilter unionImpl(NegativeNamespaceFilter a, NegativeNamespaceFilter b) {\r
-        THashSet<String> excludedValues = new THashSet<String>(a.excludedValues);\r
-        excludedValues.retainAll(b.excludedValues);\r
-        if(excludedValues.size() == a.excludedValues.size())\r
-            return a;\r
-        if(excludedValues.size() == b.excludedValues.size())\r
-            return b;\r
-        if(excludedValues.isEmpty())\r
-            return AcceptAllNamespaceFilter.INSTANCE;\r
-        return new NegativeNamespaceFilter(excludedValues);\r
-    }\r
-    \r
-    public static NamespaceFilter intersection(NamespaceFilter a, NamespaceFilter b) {\r
-        if(a == AcceptAllNamespaceFilter.INSTANCE)\r
-            return b;\r
-        if(b == AcceptAllNamespaceFilter.INSTANCE)\r
-            return a;\r
-        if(a instanceof PositiveNamespaceFilter) {\r
-            if(b instanceof PositiveNamespaceFilter)\r
-                return intersectionImpl((PositiveNamespaceFilter)a, (PositiveNamespaceFilter)b);\r
-            else if(b instanceof NegativeNamespaceFilter)\r
-                return intersectionImpl((PositiveNamespaceFilter)a, (NegativeNamespaceFilter)b);\r
-        }\r
-        else if(a instanceof NegativeNamespaceFilter) {\r
-            if(b instanceof PositiveNamespaceFilter)\r
-                return intersectionImpl((PositiveNamespaceFilter)b, (NegativeNamespaceFilter)a);\r
-            else if(b instanceof NegativeNamespaceFilter)\r
-                return intersectionImpl((NegativeNamespaceFilter)a, (NegativeNamespaceFilter)b);\r
-        }\r
-        return new NamespaceFilterIntersection(a, b);\r
-    }\r
-\r
-    private static NamespaceFilter intersectionImpl(NegativeNamespaceFilter a,\r
-            NegativeNamespaceFilter b) {\r
-        THashSet<String> excludedValues = new THashSet<String>(a.excludedValues.size() + b.excludedValues.size());\r
-        excludedValues.addAll(a.excludedValues);\r
-        excludedValues.addAll(b.excludedValues);\r
-        if(excludedValues.size() == a.excludedValues.size())\r
-            return a;\r
-        if(excludedValues.size() == b.excludedValues.size())\r
-            return b;\r
-        return new NegativeNamespaceFilter(excludedValues);\r
-    }\r
-\r
-    private static NamespaceFilter intersectionImpl(PositiveNamespaceFilter a,\r
-            NegativeNamespaceFilter b) {\r
-        THashSet<String> includedValues = new THashSet<String>(a.includedValues);\r
-        includedValues.removeAll(b.excludedValues);\r
-        if(includedValues.size() == a.includedValues.size())\r
-            return a;\r
-        return new PositiveNamespaceFilter(includedValues);\r
-    }\r
-\r
-    private static NamespaceFilter intersectionImpl(PositiveNamespaceFilter a,\r
-            PositiveNamespaceFilter b) {\r
-        THashSet<String> includedValues = new THashSet<String>(a.includedValues);\r
-        includedValues.retainAll(b.includedValues);\r
-        if(includedValues.size() == a.includedValues.size())\r
-            return a;\r
-        if(includedValues.size() == b.includedValues.size())\r
-            return b;\r
-        return new PositiveNamespaceFilter(includedValues);\r
-    }\r
-}\r
+package org.simantics.scl.compiler.environment.filter;
+
+import org.simantics.scl.compiler.elaboration.expressions.EVar;
+import org.simantics.scl.compiler.module.ImportDeclaration.ImportSpec;
+
+import gnu.trove.set.hash.THashSet;
+
+public class NamespaceFilters {
+    public static NamespaceFilter createFromSpec(ImportSpec spec) {
+        if(spec.hiding) {
+            if(spec.values.length == 0)
+                return AcceptAllNamespaceFilter.INSTANCE;
+            THashSet<String> names = new THashSet<String>(spec.values.length);
+            for(EVar value : spec.values)
+                names.add(value.name);
+            return new NegativeNamespaceFilter(names);
+        }
+        else {
+            THashSet<String> names = new THashSet<String>(spec.values.length);
+            for(EVar value : spec.values)
+                names.add(value.name);
+            return new PositiveNamespaceFilter(names);
+        }
+    }
+    
+    public static NamespaceFilter union(NamespaceFilter a, NamespaceFilter b) {
+        if(a == AcceptAllNamespaceFilter.INSTANCE || b == AcceptAllNamespaceFilter.INSTANCE)
+            return AcceptAllNamespaceFilter.INSTANCE;
+        if(a instanceof PositiveNamespaceFilter) {
+            if(b instanceof PositiveNamespaceFilter)
+                return unionImpl((PositiveNamespaceFilter)a, (PositiveNamespaceFilter)b);
+            else if(b instanceof NegativeNamespaceFilter)
+                return unionImpl((NegativeNamespaceFilter)b, (PositiveNamespaceFilter)a);
+        }
+        else if(a instanceof NegativeNamespaceFilter) {
+            if(b instanceof PositiveNamespaceFilter)
+                return unionImpl((NegativeNamespaceFilter)a, (PositiveNamespaceFilter)b);
+            else if(b instanceof NegativeNamespaceFilter)
+                return unionImpl((NegativeNamespaceFilter)a, (NegativeNamespaceFilter)b);
+        }
+        return new NamespaceFilterUnion(a, b);
+    }
+    
+    private static NamespaceFilter unionImpl(PositiveNamespaceFilter a, PositiveNamespaceFilter b) {
+        THashSet<String> includedValues = new THashSet<String>(a.includedValues.size() + b.includedValues.size());
+        includedValues.addAll(a.includedValues);
+        includedValues.addAll(b.includedValues);
+        if(includedValues.size() == a.includedValues.size())
+            return a;
+        if(includedValues.size() == b.includedValues.size())
+            return b;
+        return new PositiveNamespaceFilter(includedValues);
+    }
+    
+    private static NamespaceFilter unionImpl(NegativeNamespaceFilter a, PositiveNamespaceFilter b) {
+        THashSet<String> excludedValues = new THashSet<String>(a.excludedValues);
+        excludedValues.removeAll(b.includedValues);
+        if(excludedValues.size() == a.excludedValues.size())
+            return a;
+        if(excludedValues.isEmpty())
+            return AcceptAllNamespaceFilter.INSTANCE;
+        return new NegativeNamespaceFilter(excludedValues);
+    }
+    
+    private static NamespaceFilter unionImpl(NegativeNamespaceFilter a, NegativeNamespaceFilter b) {
+        THashSet<String> excludedValues = new THashSet<String>(a.excludedValues);
+        excludedValues.retainAll(b.excludedValues);
+        if(excludedValues.size() == a.excludedValues.size())
+            return a;
+        if(excludedValues.size() == b.excludedValues.size())
+            return b;
+        if(excludedValues.isEmpty())
+            return AcceptAllNamespaceFilter.INSTANCE;
+        return new NegativeNamespaceFilter(excludedValues);
+    }
+    
+    public static NamespaceFilter intersection(NamespaceFilter a, NamespaceFilter b) {
+        if(a == AcceptAllNamespaceFilter.INSTANCE)
+            return b;
+        if(b == AcceptAllNamespaceFilter.INSTANCE)
+            return a;
+        if(a instanceof PositiveNamespaceFilter) {
+            if(b instanceof PositiveNamespaceFilter)
+                return intersectionImpl((PositiveNamespaceFilter)a, (PositiveNamespaceFilter)b);
+            else if(b instanceof NegativeNamespaceFilter)
+                return intersectionImpl((PositiveNamespaceFilter)a, (NegativeNamespaceFilter)b);
+        }
+        else if(a instanceof NegativeNamespaceFilter) {
+            if(b instanceof PositiveNamespaceFilter)
+                return intersectionImpl((PositiveNamespaceFilter)b, (NegativeNamespaceFilter)a);
+            else if(b instanceof NegativeNamespaceFilter)
+                return intersectionImpl((NegativeNamespaceFilter)a, (NegativeNamespaceFilter)b);
+        }
+        return new NamespaceFilterIntersection(a, b);
+    }
+
+    private static NamespaceFilter intersectionImpl(NegativeNamespaceFilter a,
+            NegativeNamespaceFilter b) {
+        THashSet<String> excludedValues = new THashSet<String>(a.excludedValues.size() + b.excludedValues.size());
+        excludedValues.addAll(a.excludedValues);
+        excludedValues.addAll(b.excludedValues);
+        if(excludedValues.size() == a.excludedValues.size())
+            return a;
+        if(excludedValues.size() == b.excludedValues.size())
+            return b;
+        return new NegativeNamespaceFilter(excludedValues);
+    }
+
+    private static NamespaceFilter intersectionImpl(PositiveNamespaceFilter a,
+            NegativeNamespaceFilter b) {
+        THashSet<String> includedValues = new THashSet<String>(a.includedValues);
+        includedValues.removeAll(b.excludedValues);
+        if(includedValues.size() == a.includedValues.size())
+            return a;
+        return new PositiveNamespaceFilter(includedValues);
+    }
+
+    private static NamespaceFilter intersectionImpl(PositiveNamespaceFilter a,
+            PositiveNamespaceFilter b) {
+        THashSet<String> includedValues = new THashSet<String>(a.includedValues);
+        includedValues.retainAll(b.includedValues);
+        if(includedValues.size() == a.includedValues.size())
+            return a;
+        if(includedValues.size() == b.includedValues.size())
+            return b;
+        return new PositiveNamespaceFilter(includedValues);
+    }
+}