// Copyright 2000-2005, FreeHEP.
package org.freehep.rtti;
import java.util.*;
/**
* Defines a field in the RTTI.
*
* Fields can be changed, but must then consist of one type, and all be const or not.
*
* @author Mark Donszelmann
* @version $Id: IField.java 8584 2006-08-10 23:06:37Z duns $
*/
public class IField {
private INamedType namedType;
private Vector comments;
private IField next;
IField(INamedType namedType, Vector comments) {
this.namedType = namedType;
this.comments = comments;
this.next = null;
}
/**
* Returns the list of comments decribing this method.
*
*
* @return list of comments
*/
public String[] getComments(String language) {
return RTTI.getComments(comments, language);
}
/**
* Returns the named type.
*
* @return namedType
*/
public INamedType getNamedType() {
return namedType;
}
/**
* Returns the next field, if the definition was a list of fields.
*
*
* @return next field
*/
public IField getNext() {
return next;
}
/**
* chains the next field to this field (appends to the end of the list)
*
* @param next next field
*/
public void setNext(IField next) {
this.next = next;
}
/**
* Returns a string representation of this field (list).
*
*
* @return string representatoon of this field (list)
*/
public String toString() {
StringBuffer s = new StringBuffer();
String[] comments = getComments(null);
for (int i = 0; i < comments.length; i++) {
s.append(comments[i]);
}
s.append("\n");
s.append(" ");
s.append("public ");
s.append(getNamedType().getType());
s.append(" ");
IField field = this;
while (field != null) {
INamedType namedType = field.getNamedType();
s.append(namedType.getName());
if (namedType.getInit() != null) {
s.append(" = ");
s.append(namedType.getInit());
}
field = field.getNext();
if (field != null) {
s.append(", ");
}
}
s.append(";");
return s.toString();
}
}