net.percederberg.grammatica.code.java
Class JavaClass

java.lang.Object
  |
  +--net.percederberg.grammatica.code.CodeElement
        |
        +--net.percederberg.grammatica.code.CodeElementContainer
              |
              +--net.percederberg.grammatica.code.java.JavaType
                    |
                    +--net.percederberg.grammatica.code.java.JavaClass
All Implemented Interfaces:
java.lang.Comparable

public class JavaClass
extends net.percederberg.grammatica.code.java.JavaType

A class generating a Java class declaration.

Version:
1.0
Author:
Per Cederberg,

Field Summary
static int ABSTRACT
          The abstract modifier constant.
static int FINAL
          The final modifier constant.
static int PACKAGE_LOCAL
          The package local access modifier constant (i.e. no modifier).
static int PRIVATE
          The private access modifier constant.
static int PROTECTED
          The protected access modifier constant.
static int PUBLIC
          The public access modifier constant.
static int STATIC
          The static modifier constant.
static int STRICTFP
          The strictfp modifier constant.
 
Constructor Summary
JavaClass(int modifiers, java.lang.String name)
          Creates a new class code generator with the specified access modifier.
JavaClass(int modifiers, java.lang.String name, java.lang.String extendClass)
          Creates a new class code generator with the specified access modifier that extends the specified class.
JavaClass(int modifiers, java.lang.String name, java.lang.String extendClass, java.lang.String implementClass)
          Creates a new class code generator with the specified access modifier that extends and implements the specified classes or interfaces.
JavaClass(int modifiers, java.lang.String name, java.lang.String extendClass, java.lang.String[] implementClasses)
          Creates a new class code generator with the specified access modifier that extends and implements the specified classes or interfaces.
JavaClass(java.lang.String name)
          Creates a new class code generator with a public access modifier.
 
Method Summary
 void addClass(JavaClass member)
          Adds an inner class to this class.
 void addComment(JavaComment comment)
          Adds a comment to this type.
 void addConstructor(JavaConstructor member)
          Adds a constructor to the class.
 void addMethod(JavaMethod member)
          Adds a method to the class.
 void addVariable(JavaVariable member)
          Adds a variable to the class.
 int category()
          Returns a numeric category number for the code element.
 void print(java.io.PrintWriter out, CodeStyle style, int indent)
          Prints the code element to the specified output stream.
protected  void print(java.io.PrintWriter out, CodeStyle style, int indent, java.lang.String type)
          Prints the type to the specified stream.
protected  void printSeparator(java.io.PrintWriter out, CodeStyle style, CodeElement prev, CodeElement next)
          Prints the lines separating two elements.
 java.lang.String toString()
          Returns the type name.
 
Methods inherited from class net.percederberg.grammatica.code.CodeElementContainer
addElement, printContents
 
Methods inherited from class net.percederberg.grammatica.code.CodeElement
compareTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PUBLIC

public static final int PUBLIC
The public access modifier constant.

See Also:
Constant Field Values

PROTECTED

public static final int PROTECTED
The protected access modifier constant. May only be used when declared inside another class.

See Also:
Constant Field Values

PACKAGE_LOCAL

public static final int PACKAGE_LOCAL
The package local access modifier constant (i.e. no modifier).

See Also:
Constant Field Values

PRIVATE

public static final int PRIVATE
The private access modifier constant. May only be used when declared inside another class.

See Also:
Constant Field Values

STATIC

public static final int STATIC
The static modifier constant. May only be used when declared inside another class.

See Also:
Constant Field Values

ABSTRACT

public static final int ABSTRACT
The abstract modifier constant.

See Also:
Constant Field Values

FINAL

public static final int FINAL
The final modifier constant.

See Also:
Constant Field Values

STRICTFP

public static final int STRICTFP
The strictfp modifier constant.

See Also:
Constant Field Values
Constructor Detail

JavaClass

public JavaClass(java.lang.String name)
Creates a new class code generator with a public access modifier.

Parameters:
name - the class name

JavaClass

public JavaClass(int modifiers,
                 java.lang.String name)
Creates a new class code generator with the specified access modifier.

Parameters:
modifiers - the modifier constant flags
name - the class name

JavaClass

public JavaClass(int modifiers,
                 java.lang.String name,
                 java.lang.String extendClass)
Creates a new class code generator with the specified access modifier that extends the specified class.

Parameters:
modifiers - the modifier constant flags
name - the class name
extendClass - the class to extend

JavaClass

public JavaClass(int modifiers,
                 java.lang.String name,
                 java.lang.String extendClass,
                 java.lang.String implementClass)
Creates a new class code generator with the specified access modifier that extends and implements the specified classes or interfaces.

Parameters:
modifiers - the modifier constant flags
name - the class name
extendClass - the class to extend
implementClass - the class to implement

JavaClass

public JavaClass(int modifiers,
                 java.lang.String name,
                 java.lang.String extendClass,
                 java.lang.String[] implementClasses)
Creates a new class code generator with the specified access modifier that extends and implements the specified classes or interfaces.

Parameters:
modifiers - the modifier constant flags
name - the class name
extendClass - the class to extend
implementClasses - the classes to implement
Method Detail

addClass

public void addClass(JavaClass member)
Adds an inner class to this class.

Parameters:
member - the member to add

addConstructor

public void addConstructor(JavaConstructor member)
Adds a constructor to the class.

Parameters:
member - the member to add

addMethod

public void addMethod(JavaMethod member)
Adds a method to the class.

Parameters:
member - the member to add

addVariable

public void addVariable(JavaVariable member)
Adds a variable to the class.

Parameters:
member - the member to add

category

public int category()
Returns a numeric category number for the code element. A lower category number implies that the code element should be placed before code elements with a higher category number within a declaration.

Specified by:
category in class CodeElement
Returns:
the category number

print

public void print(java.io.PrintWriter out,
                  CodeStyle style,
                  int indent)
Prints the code element to the specified output stream.

Specified by:
print in class CodeElement
Parameters:
out - the output stream
style - the code style to use
indent - the indentation level

toString

public java.lang.String toString()
Returns the type name.

Overrides:
toString in class java.lang.Object
Returns:
the type name

addComment

public void addComment(JavaComment comment)
Adds a comment to this type.

Parameters:
comment - the new type comment

print

protected void print(java.io.PrintWriter out,
                     CodeStyle style,
                     int indent,
                     java.lang.String type)
Prints the type to the specified stream.

Parameters:
out - the output stream
style - the code style to use
indent - the indentation level
type - the type name (i.e. "class" or "interface")

printSeparator

protected void printSeparator(java.io.PrintWriter out,
                              CodeStyle style,
                              CodeElement prev,
                              CodeElement next)
Prints the lines separating two elements.

Overrides:
printSeparator in class CodeElementContainer
Parameters:
out - the output stream
style - the code style to use
prev - the previous element, or null if first
next - the next element, or null if last