Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

CS_CodeGen.jrag

Blame
  • CS_CodeGen.jrag 26.16 KiB
    import java.io.*;
    import java.util.*;
    
    aspect CS_CodeGenEnv {
    
      // Environment wrapper for CS-code generation
      // handles indentation, file writing, 
    
      public class CS_env {
    
        public final int version;
        public final String verStr;
        private int indent;
        private int depth;
        private CS_printer printer;
        private HashMap unique = new HashMap();
    
        final private static class CS_printer {
          
          private boolean newline = true;
          private File file;
          private PrintStream out;
          private IOException exception;
          
    
          public CS_printer(File f) {
      	file = f;
            File parentFile = f.getParentFile();
            if(parentFile != null) {
                parentFile.mkdirs();
            }
          }
    
         public CS_printer(PrintStream out) {
            this.out = out;
          }
    
          public void close() throws IOException {
    	if (out != null) {
      	  out.close();
            }
    	if (exception != null) {
    	  throw exception;
            }
          }
    
          public PrintStream getPrintStream() {
    	return(out);
          }
    
          public void checkOpen() {
    	if (out == null && exception == null) {
              try {
        	    out = new PrintStream(new FileOutputStream(file));
              } catch (IOException e) {
    	    exception = e;
              }
            }
          }
    
          public void print(CS_env env, String s) {
    	checkOpen();
            if (newline) {
              newline = false;
              for (int i = 0 ; i < env.indent ; i++) {
                out.print("  ");
              }
            }
            out.print(s);
          }