--- /dev/null
+package org.simantics.scl.compiler.environment.filter;\r
+\r
+import gnu.trove.set.hash.THashSet;\r
+\r
+public class NegativeNamespaceFilter implements NamespaceFilter {\r
+ THashSet<String> excludedValues;\r
+\r
+ public NegativeNamespaceFilter(THashSet<String> excludedValues) {\r
+ this.excludedValues = excludedValues;\r
+ }\r
+\r
+ @Override\r
+ public boolean isValueIncluded(String name) {\r
+ return !excludedValues.contains(name);\r
+ }\r
+ \r
+ @Override\r
+ public String toString() {\r
+ return "Exclude" + excludedValues.toString();\r
+ }\r
+\r
+ @Override\r
+ public boolean isSubsetOf(NamespaceFilter filter) {\r
+ if(filter == AcceptAllNamespaceFilter.INSTANCE)\r
+ return true;\r
+ if(filter instanceof NegativeNamespaceFilter) {\r
+ NegativeNamespaceFilter other = (NegativeNamespaceFilter)filter;\r
+ for(String name : other.excludedValues)\r
+ if(!excludedValues.contains(name))\r
+ return false;\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+}\r