Class SourceBuilder


  • public class SourceBuilder
    extends java.lang.Object
    Abstract syntax tree builder. This wraps the AST with convenience methods and added control information.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  SourceBuilder.WriterVisitor
      Visitor to apply edits.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private AbstractTypeDeclaration createClass​(java.lang.String cname, boolean isenum)
      Create a type declaration.
      Type createParameterizedType​(java.lang.String type, java.lang.String param)
      Create a parameterized type.
      Type createType​(java.lang.String type)
      Create type definition.
      protected Name createTypeName​(java.lang.String type)
      Create type name.
      void finish​(boolean verbose)
      Generate the actual source file.
      (package private) AST getAST()
      AST access for related classes.
      java.lang.String getPackageName()
      Get the name of the package containing this source file.
      ClassBuilder newInnerClass​(java.lang.String cname, ClassBuilder outer, boolean isenum)
      Add a new inner class to the file.
      ClassBuilder newMainClass​(java.lang.String cname, boolean isenum)
      Add a new main class to the file.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • s_logger

        private static final Logger s_logger
        Logger for class.
      • s_primitiveTypeCodes

        private static final java.util.Map s_primitiveTypeCodes
        Map from primitive type name to type code.
      • m_ast

        private final AST m_ast
        Actual AST instance.
      • m_package

        private final PackageHolder m_package
        Package containing this source.
      • m_name

        private final java.lang.String m_name
        Name of this source.
      • m_compilationUnit

        private final CompilationUnit m_compilationUnit
        Compilation unit.
      • m_importsTracker

        protected final ImportsTracker m_importsTracker
        Tracker for imports.
      • m_classes

        private java.util.ArrayList m_classes
        Builders for main classes in file.
    • Constructor Detail

      • SourceBuilder

        public SourceBuilder​(AST ast,
                             PackageHolder pack,
                             java.lang.String name,
                             ImportsTracker imports)
        Constructor.
        Parameters:
        ast -
        pack -
        name -
        imports -
    • Method Detail

      • getAST

        AST getAST()
        AST access for related classes.
        Returns:
        AST
      • getPackageName

        public java.lang.String getPackageName()
        Get the name of the package containing this source file.
        Returns:
        name
      • createClass

        private AbstractTypeDeclaration createClass​(java.lang.String cname,
                                                    boolean isenum)
        Create a type declaration.
        Parameters:
        cname - class name
        isenum - Java 5 enum class flag
        Returns:
        type declaration
      • newMainClass

        public ClassBuilder newMainClass​(java.lang.String cname,
                                         boolean isenum)
        Add a new main class to the file.
        Parameters:
        cname - class name
        isenum - Java 5 enum class flag
        Returns:
        builder
      • newInnerClass

        public ClassBuilder newInnerClass​(java.lang.String cname,
                                          ClassBuilder outer,
                                          boolean isenum)
        Add a new inner class to the file.
        Parameters:
        cname - class name
        outer - containing class builder
        isenum - Java 5 enum class flag
        Returns:
        builder
      • createTypeName

        protected Name createTypeName​(java.lang.String type)
        Create type name.
        Parameters:
        type - fully-qualified type name
        Returns:
        name
      • createType

        public Type createType​(java.lang.String type)
        Create type definition. This uses the supplied type name, which may include array suffixes and/or type parameters, to construct the actual type definition.
        Parameters:
        type - fully qualified type name, or primitive type name
        Returns:
        constructed typed definition
      • createParameterizedType

        public Type createParameterizedType​(java.lang.String type,
                                            java.lang.String param)
        Create a parameterized type.
        Parameters:
        type - fully qualified type name
        param - fully qualified parameter type name
        Returns:
        type
      • finish

        public void finish​(boolean verbose)
        Generate the actual source file.
        Parameters:
        verbose -