Skip to content
Snippets Groups Projects
Select Git revision
  • 05c5fb26b492fd921688d3331ddce7755fba196e
  • master default
  • labcomm2014
  • labcomm2006
  • python_sig_hash
  • typedefs
  • anders.blomdell
  • typeref
  • pragma
  • compiler-refactoring
  • labcomm2013
  • v2014.6
  • v2015.0
  • v2014.5
  • v2014.4
  • v2006.0
  • v2014.3
  • v2014.2
  • v2014.1
  • v2014.0
  • v2013.0
21 results

C_CodeGen.jrag

Blame
  • C_CodeGen.jrag 42.56 KiB
    import java.util.Vector;
    
    aspect C_CodeGenEnv {
    
      // Environment wrapper for C-code generation
      // handles qualid nesting, indentation, file writing and
      // prefix propagation
    
      public class C_env {
    
        final private static class C_printer {
          
          private boolean newline = true;
          private PrintStream out;
    
          public C_printer(PrintStream out) {
    	this.out = out;
          }
    
          public void print(C_env env, String s) {
    	if (newline) {
    	  newline = false;
    	  for (int i = 0 ; i < env.indent ; i++) {
    	    out.print("  ");
    	  }
    	}
    	out.print(s);
          }
          public void println(C_env env, String s) {
    	print(env, s);
    	out.println();
    	newline = true;
          }
        }
    
        public final String qualid;
        public final String lcName;
        public final String rawPrefix;
        public final String prefix;
        private int indent;
        public final int depth;
        private C_printer printer;
        public final int nestedLevel;
        private boolean rootIsPointer;
        private int rootLevel;
    
        private C_env(String qualid, String lcName, String rawPrefix, 
    		  int indent, int depth, C_printer printer,
                      int nestedLevel)
        {
          this.qualid = qualid;
          this.lcName = lcName;
          this.rawPrefix = rawPrefix;
          if (rawPrefix == null) {
            System.err.println("WARNING: prefix==null");
            this.prefix = ""; 
          } else if (rawPrefix.equals("")) {
            this.prefix = rawPrefix;
          } else {
            this.prefix = rawPrefix + "_";
          }
          this.indent = indent;
          this.depth = depth;
          this.printer = printer;
          this.nestedLevel = nestedLevel;
        }
    
        public C_env(String qualid, String lcName, String rawPrefix,
    		 PrintStream out)
        {