org.eclipse.cdt.core.formatter
Class CodeFormatter

java.lang.Object
  extended by org.eclipse.cdt.core.formatter.CodeFormatter
Direct Known Subclasses:
CCodeFormatter

public abstract class CodeFormatter
extends java.lang.Object

Specification for a generic source code formatter.

Since:
3.0

Field Summary
static java.lang.String EMPTY_STRING
           
static int K_CLASS_BODY_DECLARATIONS
          Kind used to format a set of class body declarations
static int K_COMPILATION_UNIT
          Kind used to format a compilation unit
static int K_EXPRESSION
          Kind used to format an expression
static int K_MULTI_LINE_COMMENT
          Kind used to format a multi-line comment
static int K_SINGLE_LINE_COMMENT
          Kind used to format a single-line comment
static int K_STATEMENTS
          Kind used to format a set of statements
static int K_UNKNOWN
          Unknown kind
 
Constructor Summary
CodeFormatter()
           
 
Method Summary
 java.lang.String createIndentationString(int indentationLevel)
          Answers the string that corresponds to the indentation to the given indentation level or an empty string if the indentation cannot be computed.
abstract  org.eclipse.text.edits.TextEdit format(int kind, java.lang.String source, int offset, int length, int indentationLevel, java.lang.String lineSeparator)
          Format source, and returns a text edit that correspond to the difference between the given string and the formatted string.
abstract  void setOptions(java.util.Map options)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY_STRING

public static final java.lang.String EMPTY_STRING
See Also:
Constant Field Values

K_UNKNOWN

public static final int K_UNKNOWN
Unknown kind

See Also:
Constant Field Values

K_EXPRESSION

public static final int K_EXPRESSION
Kind used to format an expression

See Also:
Constant Field Values

K_STATEMENTS

public static final int K_STATEMENTS
Kind used to format a set of statements

See Also:
Constant Field Values

K_CLASS_BODY_DECLARATIONS

public static final int K_CLASS_BODY_DECLARATIONS
Kind used to format a set of class body declarations

See Also:
Constant Field Values

K_COMPILATION_UNIT

public static final int K_COMPILATION_UNIT
Kind used to format a compilation unit

See Also:
Constant Field Values

K_SINGLE_LINE_COMMENT

public static final int K_SINGLE_LINE_COMMENT
Kind used to format a single-line comment

See Also:
Constant Field Values

K_MULTI_LINE_COMMENT

public static final int K_MULTI_LINE_COMMENT
Kind used to format a multi-line comment

See Also:
Constant Field Values
Constructor Detail

CodeFormatter

public CodeFormatter()
Method Detail

format

public abstract org.eclipse.text.edits.TextEdit format(int kind,
                                                       java.lang.String source,
                                                       int offset,
                                                       int length,
                                                       int indentationLevel,
                                                       java.lang.String lineSeparator)
Format source, and returns a text edit that correspond to the difference between the given string and the formatted string. It returns null if the given string cannot be formatted. If the offset position is matching a whitespace, the result can include whitespaces. It would be up to the caller to get rid of preceeding whitespaces.

Parameters:
kind - Use to specify the kind of the code snippet to format. It can be any of these: K_EXPRESSION, K_STATEMENTS, K_CLASS_BODY_DECLARATIONS, K_COMPILATION_UNIT, K_UNKNOWN
file - - file associated with this source (null if no file is associated)
source - the document to format
offset - the given offset to start recording the edits (inclusive).
length - the given length to stop recording the edits (exclusive).
indentationLevel - the initial indentation level, used to shift left/right the entire source fragment. An initial indentation level of zero or below has no effect.
lineSeparator - the line separator to use in formatted source, if set to null, then the platform default one will be used.
Returns:
the text edit
Throws:
java.lang.IllegalArgumentException - if offset is lower than 0, length is lower than 0 or length is greater than source length.

setOptions

public abstract void setOptions(java.util.Map options)
Parameters:
options - - general formatter options

createIndentationString

public java.lang.String createIndentationString(int indentationLevel)
Answers the string that corresponds to the indentation to the given indentation level or an empty string if the indentation cannot be computed.

This method needs to be overriden in a subclass.

The default implementation returns an empty string.

Parameters:
indentationLevel - the given indentation level
Returns:
the string corresponding to the right indentation level
Throws:
java.lang.IllegalArgumentException - if the given indentation level is lower than zero