X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Felaboration%2Fsubsumption%2FVUnion.java;h=b5608357a11a06b805fa8d72591a708e6f035641;hb=976bf85e9915e294d39d2673d7f8bb90f6a70144;hp=6e23778766654e7971309ec6428555553a8f5c42;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/VUnion.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/VUnion.java index 6e2377876..b5608357a 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/VUnion.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/VUnion.java @@ -1,64 +1,64 @@ -package org.simantics.scl.compiler.internal.elaboration.subsumption; - -import java.util.ArrayList; - - -public class VUnion { - Var low; - int con; - ArrayList vars; - - public VUnion(int con, ArrayList vars) { - this.con = con; - this.vars = vars; - } - - public void removeVar(Var var) { - if(vars.remove(var)) { - var.complexLowerBounds.remove(this); - var.markDirty(); - } - } - - public void addVar(Var var) { - if(!vars.contains(var)) { - vars.add(var); - var.complexLowerBounds.add(this); - var.markDirty(); - } - } - - public void makeLowerBound(int low) { - con |= ~low; - if(vars.size() == 1) - vars.get(0).addLowerBound(~con); - else - for(Var v : vars) - v.complexLowerBounds.add(this); - } - - public int getUpperApprox() { - int cur = con; - for(Var v : vars) - cur |= v.upperApprox; - return cur; - } - - @Override - public String toString() { - StringBuilder b = new StringBuilder(); - boolean first = true; - if(con > 0) { - b.append(con); - first = false; - } - for(Var v : vars) { - if(first) - first = false; - else - b.append(" + "); - b.append(v.name); - } - return b.toString(); - } -} +package org.simantics.scl.compiler.internal.elaboration.subsumption; + +import java.util.ArrayList; + + +public class VUnion { + Var low; + int con; + ArrayList vars; + + public VUnion(int con, ArrayList vars) { + this.con = con; + this.vars = vars; + } + + public void removeVar(Var var) { + if(vars.remove(var)) { + var.complexLowerBounds.remove(this); + var.markDirty(); + } + } + + public void addVar(Var var) { + if(!vars.contains(var)) { + vars.add(var); + var.complexLowerBounds.add(this); + var.markDirty(); + } + } + + public void makeLowerBound(int low) { + con |= ~low; + if(vars.size() == 1) + vars.get(0).addLowerBound(~con); + else + for(Var v : vars) + v.complexLowerBounds.add(this); + } + + public int getUpperApprox() { + int cur = con; + for(Var v : vars) + cur |= v.upperApprox; + return cur; + } + + @Override + public String toString() { + StringBuilder b = new StringBuilder(); + boolean first = true; + if(con > 0) { + b.append(con); + first = false; + } + for(Var v : vars) { + if(first) + first = false; + else + b.append(" + "); + b.append(v.name); + } + return b.toString(); + } +}