]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/source/StringModuleSource.java
SCL compiler generates line numbers to bytecode
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / source / StringModuleSource.java
1 package org.simantics.scl.compiler.source;
2
3 import java.io.IOException;
4
5 import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidator;
6 import org.simantics.scl.compiler.internal.codegen.types.RuntimeJavaReferenceValidator;
7 import org.simantics.scl.compiler.module.repository.UpdateListener;
8
9 public class StringModuleSource extends TextualModuleSource {
10     private final String moduleText;
11     private final ClassLoader classLoader;
12
13     public StringModuleSource(String moduleName, ClassLoader classLoader, String moduleText) {
14         super(moduleName);
15         this.classLoader = classLoader;
16         this.moduleText = moduleText;
17     }
18
19     public StringModuleSource(String moduleName, String moduleText) {
20         this(moduleName, StringModuleSource.class.getClassLoader(), moduleText);
21     }
22     
23     @Override
24     public String getSourceText(UpdateListener listener) throws IOException {
25         return moduleText;
26     }
27     
28     @Override
29     public ClassLoader getClassLoader() {
30         return classLoader;
31     }
32
33     @Override
34     protected JavaReferenceValidator<?, ?, ?, ?> getJavaReferenceValidator() {
35         return new RuntimeJavaReferenceValidator(getClassLoader());
36     }
37 }