diff options
author | Sven Gothel <[email protected]> | 2015-03-23 22:20:11 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2015-03-23 22:20:11 +0100 |
commit | 0bb7cf5586f08c00de051036427de36e2b1601f4 (patch) | |
tree | 52e807d3c452d619a942379e3ef8768a2407b020 /src/main/java/com/jogamp/gluegen/jcpp/ResourceFileSystem.java | |
parent | e3b1d17a2f2b4070c1080fa6f78cfc1bcd28c78c (diff) |
Relocate JCPP package: org/anarres/cpp -> com/jogamp/gluegen/jcpp
Diffstat (limited to 'src/main/java/com/jogamp/gluegen/jcpp/ResourceFileSystem.java')
-rw-r--r-- | src/main/java/com/jogamp/gluegen/jcpp/ResourceFileSystem.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/main/java/com/jogamp/gluegen/jcpp/ResourceFileSystem.java b/src/main/java/com/jogamp/gluegen/jcpp/ResourceFileSystem.java new file mode 100644 index 0000000..438d9c1 --- /dev/null +++ b/src/main/java/com/jogamp/gluegen/jcpp/ResourceFileSystem.java @@ -0,0 +1,81 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.jogamp.gluegen.jcpp; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import javax.annotation.Nonnull; + +/** + * + * @author shevek + */ +public class ResourceFileSystem implements VirtualFileSystem { + + private final ClassLoader loader; + + public ResourceFileSystem(@Nonnull ClassLoader loader) { + this.loader = loader; + } + + @Override + public VirtualFile getFile(String path) { + return new ResourceFile(loader, path); + } + + @Override + public VirtualFile getFile(String dir, String name) { + return getFile(dir + "/" + name); + } + + private class ResourceFile implements VirtualFile { + + private final ClassLoader loader; + private final String path; + + public ResourceFile(ClassLoader loader, String path) { + this.loader = loader; + this.path = path; + } + + @Override + public boolean isFile() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public String getPath() { + return path; + } + + @Override + public String getName() { + return path.substring(path.lastIndexOf('/') + 1); + } + + @Override + public ResourceFile getParentFile() { + int idx = path.lastIndexOf('/'); + if (idx < 1) + return null; + return new ResourceFile(loader, path.substring(0, idx)); + } + + @Override + public ResourceFile getChildFile(String name) { + return new ResourceFile(loader, path + "/" + name); + } + + @Override + public Source getSource() throws IOException { + InputStream stream = loader.getResourceAsStream(path); + BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); + return new LexerSource(reader, true); + } + } +} |