X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMMember.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMMember.java
index 19bde2e..22ee3bb 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMMember.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMMember.java
@@ -18,7 +18,7 @@ import net.sourceforge.phpdt.internal.core.util.CharArrayOps;
/**
* DOMMember provides an implementation of IDOMMember.
- *
+ *
* @see IDOMMember
* @see DOMNode
*/
@@ -26,326 +26,354 @@ import net.sourceforge.phpdt.internal.core.util.CharArrayOps;
abstract class DOMMember extends DOMNode implements IDOMMember {
/**
- * The modifier flags for this member that can be
- * analyzed with org.eclipse.jdt.core.Flags
+ * The modifier flags for this member that can be analyzed with
+ * net.sourceforge.phpdt.core.Flags
*/
- protected int fFlags= 0;
+ protected int fFlags = 0;
/**
- * The member's comments when it has been altered from
- * the contents in the document, otherwise null
.
+ * The member's comments when it has been altered from the contents in the
+ * document, otherwise null
.
*/
- protected String fComment= null;
+ protected String fComment = null;
/**
- * The original inclusive source range of the
- * member's preceding comments in the document,
- * or -1's if the member did not originally have a
- * comment.
+ * The original inclusive source range of the member's preceding comments in
+ * the document, or -1's if the member did not originally have a comment.
*/
- protected int[] fCommentRange;
-
+ protected int[] fCommentRange;
/**
- * The member's modifiers textual representation when
- * the modifiers (flags) have been altered from
- * their original contents, otherwise null
.
+ * The member's modifiers textual representation when the modifiers (flags)
+ * have been altered from their original contents, otherwise
+ * null
.
*/
- protected char[] fModifiers= null;
+ protected char[] fModifiers = null;
/**
- * The original inclusive source range of the
- * member's modifiers in the document, or -1's if
- * the member did not originally have modifiers in
- * the source code (that is, package default visibility).
+ * The original inclusive source range of the member's modifiers in the
+ * document, or -1's if the member did not originally have modifiers in the
+ * source code (that is, package default visibility).
*/
- protected int[] fModifierRange;
+ protected int[] fModifierRange;
-/**
- * Constructs an empty member node.
- */
-DOMMember() {
+ /**
+ * Constructs an empty member node.
+ */
+ DOMMember() {
-}
-/**
- * Creates a new member document fragment on the given range of the document.
- *
- * @param document - the document containing this node's original contents
- * @param sourceRange - a two element array of integers describing the
- * entire inclusive source range of this node within its document.
- * Contents start on and include the character at the first position.
- * Contents end on and include the character at the last position.
- * An array of -1's indicates this node's contents do not exist
- * in the document.
- * @param name - the identifier portion of the name of this node, or
- * null
if this node does not have a name
- * @param nameRange - a two element array of integers describing the
- * entire inclusive source range of this node's name within its document,
- * including any array qualifiers that might immediately follow the name.
- * @param commentRange - a two element array describing the comments that precede
- * the member declaration. The first matches the start of this node's
- * sourceRange, and the second is the new-line or first non-whitespace
- * character following the last comment. If no comments are present,
- * this array contains two -1's.
- * @param flags - an integer representing the modifiers for this member. The
- * integer can be analyzed with org.eclipse.jdt.core.Flags
- * @param modifierRange - a two element array describing the location of
- * modifiers for this member within its source range. The first integer
- * is the first character of the first modifier for this member, and
- * the second integer is the last whitespace character preceeding the
- * next part of this member declaration. If there are no modifiers present
- * in this node's source code (that is, package default visibility), this array
- * contains two -1's.
- */
-DOMMember(char[] document, int[] sourceRange, String name, int[] nameRange, int[] commentRange, int flags, int[] modifierRange) {
- super(document, sourceRange, name, nameRange);
- fFlags= flags;
- fComment= null;
- fCommentRange= commentRange;
- fModifierRange= modifierRange;
- setHasComment(commentRange[0] >= 0);
-}
-/**
- * Appends the contents of this node to the given CharArrayBuffer, using
- * the original document and indicies as a form for the current attribute values
- * of this node.
- *
- *
To facilitate the implementation of generating contents for members,
- * the content of members is split into three sections - the header,
- * declaration, and body sections. The header section includes any preceding
- * comments and modifiers. The declaration section includes the portion of
- * the member declaration that follows any modifiers and precedes the
- * member body. The body section includes the member body and any trailing
- * whitespace.
- *
- * @see DOMNode#appendFragmentedContents(CharArrayBuffer)
- */
-protected void appendFragmentedContents(CharArrayBuffer buffer) {
- if (isDetailed()) {
- appendMemberHeaderFragment(buffer);
- appendMemberDeclarationContents(buffer);
- appendMemberBodyContents(buffer);
- } else {
- appendSimpleContents(buffer);
}
-}
-/**
- * Appends this member's body contents to the given CharArrayBuffer.
- * Body contents include the member body and any trailing whitespace.
- */
-protected abstract void appendMemberBodyContents(CharArrayBuffer buffer);
-/**
- * Appends this member's declaration contents to the given CharArrayBuffer.
- * The declaration contents includes the portion of this member that
- * appears after any modifiers and precedes the body.
- */
-protected abstract void appendMemberDeclarationContents(CharArrayBuffer buffer);
-/**
- * Appends this member's header contents to the given CharArrayBuffer.
- * Header contents include any preceding comments and modifiers.
- */
-protected void appendMemberHeaderFragment(CharArrayBuffer buffer) {
- int spaceStart, spaceEnd;
+ /**
+ * Creates a new member document fragment on the given range of the
+ * document.
+ *
+ * @param document -
+ * the document containing this node's original contents
+ * @param sourceRange -
+ * a two element array of integers describing the entire
+ * inclusive source range of this node within its document.
+ * Contents start on and include the character at the first
+ * position. Contents end on and include the character at the
+ * last position. An array of -1's indicates this node's contents
+ * do not exist in the document.
+ * @param name -
+ * the identifier portion of the name of this node, or
+ * null
if this node does not have a name
+ * @param nameRange -
+ * a two element array of integers describing the entire
+ * inclusive source range of this node's name within its
+ * document, including any array qualifiers that might
+ * immediately follow the name.
+ * @param commentRange -
+ * a two element array describing the comments that precede the
+ * member declaration. The first matches the start of this node's
+ * sourceRange, and the second is the new-line or first
+ * non-whitespace character following the last comment. If no
+ * comments are present, this array contains two -1's.
+ * @param flags -
+ * an integer representing the modifiers for this member. The
+ * integer can be analyzed with net.sourceforge.phpdt.core.Flags
+ * @param modifierRange -
+ * a two element array describing the location of modifiers for
+ * this member within its source range. The first integer is the
+ * first character of the first modifier for this member, and the
+ * second integer is the last whitespace character preceeding the
+ * next part of this member declaration. If there are no
+ * modifiers present in this node's source code (that is, package
+ * default visibility), this array contains two -1's.
+ */
+ DOMMember(char[] document, int[] sourceRange, String name, int[] nameRange,
+ int[] commentRange, int flags, int[] modifierRange) {
+ super(document, sourceRange, name, nameRange);
+ fFlags = flags;
+ fComment = null;
+ fCommentRange = commentRange;
+ fModifierRange = modifierRange;
+ setHasComment(commentRange[0] >= 0);
+ }
- // space before comment
- if (hasComment()) {
- spaceStart= fSourceRange[0];
- spaceEnd= fCommentRange[0];
- if (spaceEnd > 0) {
- buffer.append(fDocument, spaceStart, spaceEnd - spaceStart);
+ /**
+ * Appends the contents of this node to the given CharArrayBuffer, using the
+ * original document and indicies as a form for the current attribute values
+ * of this node.
+ *
+ *
+ * To facilitate the implementation of generating contents for members, the
+ * content of members is split into three sections - the header,
+ * declaration, and body sections. The header section includes any preceding
+ * comments and modifiers. The declaration section includes the portion of
+ * the member declaration that follows any modifiers and precedes the member
+ * body. The body section includes the member body and any trailing
+ * whitespace.
+ *
+ * @see DOMNode#appendFragmentedContents(CharArrayBuffer)
+ */
+ protected void appendFragmentedContents(CharArrayBuffer buffer) {
+ if (isDetailed()) {
+ appendMemberHeaderFragment(buffer);
+ appendMemberDeclarationContents(buffer);
+ appendMemberBodyContents(buffer);
+ } else {
+ appendSimpleContents(buffer);
}
}
-
- String fragment= getComment();
- if (fragment != null) {
- buffer.append(fragment);
+
+ /**
+ * Appends this member's body contents to the given CharArrayBuffer. Body
+ * contents include the member body and any trailing whitespace.
+ */
+ protected abstract void appendMemberBodyContents(CharArrayBuffer buffer);
+
+ /**
+ * Appends this member's declaration contents to the given CharArrayBuffer.
+ * The declaration contents includes the portion of this member that appears
+ * after any modifiers and precedes the body.
+ */
+ protected abstract void appendMemberDeclarationContents(
+ CharArrayBuffer buffer);
+
+ /**
+ * Appends this member's header contents to the given CharArrayBuffer.
+ * Header contents include any preceding comments and modifiers.
+ */
+ protected void appendMemberHeaderFragment(CharArrayBuffer buffer) {
+
+ int spaceStart, spaceEnd;
+
+ // space before comment
+ if (hasComment()) {
+ spaceStart = fSourceRange[0];
+ spaceEnd = fCommentRange[0];
+ if (spaceEnd > 0) {
+ buffer.append(fDocument, spaceStart, spaceEnd - spaceStart);
+ }
+ }
+
+ String fragment = getComment();
+ if (fragment != null) {
+ buffer.append(fragment);
+ }
+
+ if (fCommentRange[1] >= 0) {
+ spaceStart = fCommentRange[1] + 1;
+ } else {
+ spaceStart = fSourceRange[0];
+ }
+ if (fModifierRange[0] >= 0) {
+ spaceEnd = fModifierRange[0] - 1;
+ } else {
+ spaceEnd = getMemberDeclarationStartPosition() - 1;
+ }
+
+ if (spaceEnd >= spaceStart) {
+ buffer.append(fDocument, spaceStart, spaceEnd + 1 - spaceStart);
+ }
+ buffer.append(getModifiersText());
+
}
- if (fCommentRange[1] >= 0) {
- spaceStart= fCommentRange[1] + 1;
- } else {
- spaceStart= fSourceRange[0];
+ /**
+ * Appends the contents of this node to the given CharArrayBuffer, using the
+ * original document and indicies as a form for the current attribute values
+ * of this node. This method is called when this node is know not to have
+ * detailed source indexes.
+ */
+ protected abstract void appendSimpleContents(CharArrayBuffer buffer);
+
+ /**
+ * Returns a copy of the given array with the new element appended to the
+ * end of the array.
+ */
+ protected String[] appendString(String[] list, String element) {
+ String[] copy = new String[list.length + 1];
+ System.arraycopy(list, 0, copy, 0, list.length);
+ copy[list.length] = element;
+ return copy;
}
- if (fModifierRange[0] >= 0) {
- spaceEnd= fModifierRange[0] - 1;
- } else {
- spaceEnd= getMemberDeclarationStartPosition() - 1;
+
+ /**
+ * Returns a String
describing the modifiers for this member,
+ * ending with whitespace (if not empty). This value serves as a replacement
+ * value for the member's modifier range when the modifiers have been
+ * altered from their original contents.
+ */
+ protected char[] generateFlags() {
+ char[] flags = Flags.toString(getFlags()).toCharArray();
+ if (flags.length == 0) {
+ return flags;
+ } else {
+ return CharArrayOps.concat(flags, new char[] { ' ' });
+ }
}
- if (spaceEnd >= spaceStart) {
- buffer.append(fDocument, spaceStart, spaceEnd + 1 - spaceStart);
+ /**
+ * @see IDOMMember#getComment()
+ */
+ public String getComment() {
+ becomeDetailed();
+ if (hasComment()) {
+ if (fComment != null) {
+ return fComment;
+ } else {
+ return CharArrayOps.substring(fDocument, fCommentRange[0],
+ fCommentRange[1] + 1 - fCommentRange[0]);
+ }
+ } else {
+ return null;
+ }
}
- buffer.append(getModifiersText());
-}
-/**
- * Appends the contents of this node to the given CharArrayBuffer, using
- * the original document and indicies as a form for the current attribute values
- * of this node. This method is called when this node is know not to have
- * detailed source indexes.
- */
-protected abstract void appendSimpleContents(CharArrayBuffer buffer);
-/**
- * Returns a copy of the given array with the new element appended
- * to the end of the array.
- */
-protected String[] appendString(String[] list, String element) {
- String[] copy= new String[list.length + 1];
- System.arraycopy(list, 0, copy, 0, list.length);
- copy[list.length]= element;
- return copy;
-}
-/**
- * Returns a String
describing the modifiers for this member,
- * ending with whitespace (if not empty). This value serves as a replacement
- * value for the member's modifier range when the modifiers have been altered
- * from their original contents.
- */
-protected char[] generateFlags() {
- char[] flags= Flags.toString(getFlags()).toCharArray();
- if (flags.length == 0) {
- return flags;
- } else {
- return CharArrayOps.concat(flags, new char[] {' '});
+ /**
+ * @see IDOMMember#getFlags()
+ */
+ public int getFlags() {
+ return fFlags;
}
-}
-/**
- * @see IDOMMember#getComment()
- */
-public String getComment() {
- becomeDetailed();
- if (hasComment()) {
- if (fComment != null) {
- return fComment;
+
+ /**
+ * Returns the location of the first character in the member's declaration
+ * section.
+ *
+ * @see DOMMember#getMemberDeclarationContents()
+ * @see DOMMember#getFragmentedContents()
+ */
+ protected abstract int getMemberDeclarationStartPosition();
+
+ /**
+ * Returns the String to be used for this member's flags when generating
+ * contents - either the original contents in the document or the
+ * replacement value.
+ */
+ protected char[] getModifiersText() {
+ if (fModifiers == null) {
+ if (fModifierRange[0] < 0) {
+ return null;
+ } else {
+ return CharArrayOps.subarray(fDocument, fModifierRange[0],
+ fModifierRange[1] + 1 - fModifierRange[0]);
+ }
} else {
- return CharArrayOps.substring(fDocument, fCommentRange[0], fCommentRange[1] + 1 - fCommentRange[0]);
+ return fModifiers;
}
- } else {
- return null;
}
-}
-/**
- * @see IDOMMember#getFlags()
- */
-public int getFlags() {
- return fFlags;
-}
-/**
- * Returns the location of the first character in the member's declaration
- * section.
- *
- * @see DOMMember#getMemberDeclarationContents()
- * @see DOMMember#getFragmentedContents()
- */
-protected abstract int getMemberDeclarationStartPosition();
-/**
- * Returns the String to be used for this member's flags when
- * generating contents - either the original contents in the document
- * or the replacement value.
- */
-protected char[] getModifiersText() {
- if (fModifiers == null) {
- if (fModifierRange[0] < 0) {
- return null;
- } else {
- return CharArrayOps.subarray(fDocument, fModifierRange[0], fModifierRange[1] + 1 - fModifierRange[0]);
+
+ /**
+ * Returns true if this member currently has a body.
+ */
+ protected boolean hasBody() {
+ return getMask(MASK_HAS_BODY);
+ }
+
+ /**
+ * Returns true if this member currently has a comment.
+ */
+ protected boolean hasComment() {
+ return getMask(MASK_HAS_COMMENT);
+ }
+
+ /**
+ * Offsets all the source indexes in this node by the given amount.
+ */
+ protected void offset(int offset) {
+ super.offset(offset);
+ offsetRange(fCommentRange, offset);
+ offsetRange(fModifierRange, offset);
+ }
+
+ /**
+ * @see IDOMMember#setComment(String)
+ */
+ public void setComment(String comment) {
+ becomeDetailed();
+ fComment = comment;
+ fragment();
+ setHasComment(comment != null);
+ /* see 1FVIJAH */
+ if (comment != null) {
+ String commentString = new String(comment);
+ if (commentString.indexOf("@deprecated") >= 0) { //$NON-NLS-1$
+ fFlags = fFlags | IConstants.AccDeprecated;
+ return;
+ }
+
}
- } else {
- return fModifiers;
+ fFlags = fFlags & (~IConstants.AccDeprecated);
+
}
-}
-/**
- * Returns true if this member currently has a body.
- */
-protected boolean hasBody() {
- return getMask(MASK_HAS_BODY);
-}
-/**
- * Returns true if this member currently has a comment.
- */
-protected boolean hasComment() {
- return getMask(MASK_HAS_COMMENT);
-}
-/**
- * Offsets all the source indexes in this node by the given amount.
- */
-protected void offset(int offset) {
- super.offset(offset);
- offsetRange(fCommentRange, offset);
- offsetRange(fModifierRange, offset);
-}
-/**
- * @see IDOMMember#setComment(String)
- */
-public void setComment(String comment) {
- becomeDetailed();
- fComment= comment;
- fragment();
- setHasComment(comment != null);
- /* see 1FVIJAH */
- if (comment != null) {
- String commentString = new String(comment);
- if (commentString.indexOf("@deprecated") >= 0) { //$NON-NLS-1$
- fFlags= fFlags | IConstants.AccDeprecated;
- return;
+
+ /**
+ * @see IDOMMember#setFlags(int)
+ */
+ public void setFlags(int flags) {
+ becomeDetailed();
+ if (Flags.isDeprecated(fFlags)) {
+ fFlags = flags | IConstants.AccDeprecated;
+ } else {
+ fFlags = flags & (~IConstants.AccDeprecated);
}
+ fragment();
+ fModifiers = generateFlags();
+ }
+ /**
+ * Sets the state of this member declaration as having a body.
+ */
+ protected void setHasBody(boolean hasBody) {
+ setMask(MASK_HAS_BODY, hasBody);
}
- fFlags= fFlags & (~IConstants.AccDeprecated);
-}
-/**
- * @see IDOMMember#setFlags(int)
- */
-public void setFlags(int flags) {
- becomeDetailed();
- if (Flags.isDeprecated(fFlags)) {
- fFlags= flags | IConstants.AccDeprecated;
- } else {
- fFlags= flags & (~IConstants.AccDeprecated);
+ /**
+ * Sets the state of this member declaration as having a preceding comment.
+ */
+ protected void setHasComment(boolean hasComment) {
+ setMask(MASK_HAS_COMMENT, hasComment);
}
- fragment();
- fModifiers= generateFlags();
-}
-/**
- * Sets the state of this member declaration as having
- * a body.
- */
-protected void setHasBody(boolean hasBody) {
- setMask(MASK_HAS_BODY, hasBody);
-}
-/**
- * Sets the state of this member declaration as having
- * a preceding comment.
- */
-protected void setHasComment(boolean hasComment) {
- setMask(MASK_HAS_COMMENT, hasComment);
-}
-/**
- * Sets the original position of the first character of this node's contents
- * in its document. This method is only used during DOM creation while
- * normalizing the source range of each node.
- *
- * Synchronize the start of the comment position with the start of the
- * node.
- */
-protected void setStartPosition(int start) {
- if (fCommentRange[0] >= 0) {
- fCommentRange[0]= start;
+
+ /**
+ * Sets the original position of the first character of this node's contents
+ * in its document. This method is only used during DOM creation while
+ * normalizing the source range of each node.
+ *
+ * Synchronize the start of the comment position with the start of the node.
+ */
+ protected void setStartPosition(int start) {
+ if (fCommentRange[0] >= 0) {
+ fCommentRange[0] = start;
+ }
+ super.setStartPosition(start);
+ }
+
+ /**
+ * @see DOMNode#shareContents(DOMNode)
+ */
+ protected void shareContents(DOMNode node) {
+ super.shareContents(node);
+ DOMMember member = (DOMMember) node;
+ fComment = member.fComment;
+ fCommentRange = rangeCopy(member.fCommentRange);
+ fFlags = member.fFlags;
+ fModifiers = member.fModifiers;
+ fModifierRange = rangeCopy(member.fModifierRange);
}
- super.setStartPosition(start);
-}
-/**
- * @see DOMNode#shareContents(DOMNode)
- */
-protected void shareContents(DOMNode node) {
- super.shareContents(node);
- DOMMember member= (DOMMember)node;
- fComment= member.fComment;
- fCommentRange= rangeCopy(member.fCommentRange);
- fFlags= member.fFlags;
- fModifiers= member.fModifiers;
- fModifierRange= rangeCopy(member.fModifierRange);
-}
}