]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/CopyContext.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / utils / CopyContext.java
index e5fb40a8a709807d43d702e94b04cb70bbad92ad..48f43d173a7ed9c91530af081429f38977fe5616 100644 (file)
-package org.simantics.scl.compiler.internal.codegen.utils;\r
-\r
-import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;\r
-import org.simantics.scl.compiler.internal.codegen.continuations.Cont;\r
-import org.simantics.scl.compiler.internal.codegen.continuations.ContRef;\r
-import org.simantics.scl.compiler.internal.codegen.references.BoundVar;\r
-import org.simantics.scl.compiler.internal.codegen.references.Val;\r
-import org.simantics.scl.compiler.internal.codegen.references.ValRef;\r
-import org.simantics.scl.compiler.top.SCLCompilerConfiguration;\r
-import org.simantics.scl.compiler.types.TVar;\r
-import org.simantics.scl.compiler.types.Type;\r
-import org.simantics.scl.compiler.types.Types;\r
-\r
-import gnu.trove.map.hash.THashMap;\r
-\r
-public class CopyContext {\r
-\r
-    THashMap<Val, Val> valMap = new THashMap<Val, Val>();\r
-    THashMap<Cont, Cont> contMap = new THashMap<Cont, Cont>();\r
-    THashMap<TVar, TVar> tvarMap = new THashMap<TVar, TVar>(); \r
-    \r
-    public void put(Val src, Val tgt) {\r
-        Val ret = valMap.put(src, tgt);\r
-        if(SCLCompilerConfiguration.DEBUG) {\r
-            if(ret != null)\r
-                throw new InternalCompilerError();\r
-        }\r
-    }\r
-\r
-    public void put(Cont src, Cont tgt) {\r
-        Cont ret = contMap.put(src, tgt);\r
-        if(SCLCompilerConfiguration.DEBUG) {\r
-            if(ret != null)\r
-                throw new InternalCompilerError();\r
-        }\r
-    }\r
-    \r
-    public TVar[] copyParameters(TVar[] vars) {\r
-        TVar[] result = new TVar[vars.length];\r
-        for(int i=0;i<vars.length;++i) {\r
-            TVar var = vars[i];\r
-            TVar newVar = Types.var(var.getKind());\r
-            result[i] = newVar;\r
-            tvarMap.put(var, newVar);\r
-        }\r
-        return result;\r
-    }\r
-\r
-    public BoundVar[] copy(BoundVar[] src) {\r
-        BoundVar[] tgt = new BoundVar[src.length];\r
-        for(int i=0;i<src.length;++i)\r
-            tgt[i] = copy(src[i]);\r
-        return tgt;\r
-    }\r
-    \r
-    public ValRef[] copy(ValRef[] src) {\r
-        ValRef[] tgt = new ValRef[src.length];\r
-        for(int i=0;i<src.length;++i)\r
-            tgt[i] = copy(src[i]);\r
-        return tgt;\r
-    }\r
-    \r
-    public ValRef copy(ValRef src) {\r
-        return copy(src.getBinding())\r
-                .createOccurrence(Types.replace(src.getTypeParameters(), tvarMap));\r
-    }\r
-\r
-    @SuppressWarnings("unchecked")\r
-    public <T extends Val> T copy(T src) {\r
-        Val tgt = valMap.get(src);\r
-        if(tgt != null)\r
-            return (T)tgt;\r
-        tgt = src.copy(tvarMap);\r
-        valMap.put(src, tgt);\r
-        return (T)tgt;\r
-    }\r
-    \r
-    public ContRef[] copy(ContRef[] src) {\r
-        ContRef[] tgt = new ContRef[src.length];\r
-        for(int i=0;i<src.length;++i)\r
-            tgt[i] = copy(src[i]);\r
-        return tgt;\r
-    }\r
-    \r
-    public ContRef copy(ContRef src) {\r
-        return copy(src.getBinding()).createOccurrence();\r
-    }\r
-\r
-    @SuppressWarnings("unchecked")\r
-    public <T extends Cont> T copy(T src) {\r
-        Cont tgt = contMap.get(src);\r
-        if(tgt != null)\r
-            return (T)tgt;\r
-        tgt = src.copy(this);\r
-        contMap.put(src, tgt);\r
-        return (T)tgt;\r
-    }\r
-\r
-    public Type copyType(Type type) {\r
-        return type.replace(tvarMap); \r
-    }\r
-\r
-}\r
+package org.simantics.scl.compiler.internal.codegen.utils;
+
+import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
+import org.simantics.scl.compiler.internal.codegen.continuations.Cont;
+import org.simantics.scl.compiler.internal.codegen.continuations.ContRef;
+import org.simantics.scl.compiler.internal.codegen.references.BoundVar;
+import org.simantics.scl.compiler.internal.codegen.references.Val;
+import org.simantics.scl.compiler.internal.codegen.references.ValRef;
+import org.simantics.scl.compiler.top.SCLCompilerConfiguration;
+import org.simantics.scl.compiler.types.TVar;
+import org.simantics.scl.compiler.types.Type;
+import org.simantics.scl.compiler.types.Types;
+
+import gnu.trove.map.hash.THashMap;
+
+public class CopyContext {
+
+    THashMap<Val, Val> valMap = new THashMap<Val, Val>();
+    THashMap<Cont, Cont> contMap = new THashMap<Cont, Cont>();
+    THashMap<TVar, TVar> tvarMap = new THashMap<TVar, TVar>(); 
+    
+    public void put(Val src, Val tgt) {
+        Val ret = valMap.put(src, tgt);
+        if(SCLCompilerConfiguration.DEBUG) {
+            if(ret != null)
+                throw new InternalCompilerError();
+        }
+    }
+
+    public void put(Cont src, Cont tgt) {
+        Cont ret = contMap.put(src, tgt);
+        if(SCLCompilerConfiguration.DEBUG) {
+            if(ret != null)
+                throw new InternalCompilerError();
+        }
+    }
+    
+    public TVar[] copyParameters(TVar[] vars) {
+        TVar[] result = new TVar[vars.length];
+        for(int i=0;i<vars.length;++i) {
+            TVar var = vars[i];
+            TVar newVar = Types.var(var.getKind());
+            result[i] = newVar;
+            tvarMap.put(var, newVar);
+        }
+        return result;
+    }
+
+    public BoundVar[] copy(BoundVar[] src) {
+        BoundVar[] tgt = new BoundVar[src.length];
+        for(int i=0;i<src.length;++i)
+            tgt[i] = copy(src[i]);
+        return tgt;
+    }
+    
+    public ValRef[] copy(ValRef[] src) {
+        ValRef[] tgt = new ValRef[src.length];
+        for(int i=0;i<src.length;++i)
+            tgt[i] = copy(src[i]);
+        return tgt;
+    }
+    
+    public ValRef copy(ValRef src) {
+        return copy(src.getBinding())
+                .createOccurrence(Types.replace(src.getTypeParameters(), tvarMap));
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T extends Val> T copy(T src) {
+        Val tgt = valMap.get(src);
+        if(tgt != null)
+            return (T)tgt;
+        tgt = src.copy(tvarMap);
+        valMap.put(src, tgt);
+        return (T)tgt;
+    }
+    
+    public ContRef[] copy(ContRef[] src) {
+        ContRef[] tgt = new ContRef[src.length];
+        for(int i=0;i<src.length;++i)
+            tgt[i] = copy(src[i]);
+        return tgt;
+    }
+    
+    public ContRef copy(ContRef src) {
+        return copy(src.getBinding()).createOccurrence();
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T extends Cont> T copy(T src) {
+        Cont tgt = contMap.get(src);
+        if(tgt != null)
+            return (T)tgt;
+        tgt = src.copy(this);
+        contMap.put(src, tgt);
+        return (T)tgt;
+    }
+
+    public Type copyType(Type type) {
+        return type.replace(tvarMap); 
+    }
+
+}