int index = 0;
int superTypeMemberCount = 0;
if( _superType != null )
superTypeMemberCount = _superType.getFieldDescriptions().length;
IFieldDescription tmp_iFieldDescriptions[] = new IFieldDescription[fields.length];
Hashtable iFieldDescriptionsByName = new Hashtable();
int i;
for( i = 0; i < fields.length; ++ i) {
if((fields[i].getModifiers() & (Modifier.STATIC | Modifier.TRANSIENT)) == 0) { // neither static nor transient ?
IFieldDescription iFieldDescription = null;
if(_superType != null)
iFieldDescription = _superType.getFieldDescription(fields[i].getName());
if(iFieldDescription == null) {
MemberTypeInfo memberTypeInfo = __findMemberTypeInfo(typeInfos, fields[i].getName());
if( memberTypeInfo == null )
throw new com.sun.star.uno.RuntimeException(
TypeDescription.class.getName() + "no membertype info for field " + fields[i].getName(),null );
iFieldDescription = new FieldDescription(
memberTypeInfo.getName(),
memberTypeInfo.getIndex() + superTypeMemberCount,
memberTypeInfo.getFlags(),
fields[i]);
}
iFieldDescriptionsByName.put(iFieldDescription.getName(), iFieldDescription);
tmp_iFieldDescriptions[index ++] = iFieldDescription;
}
}
IFieldDescription iFieldDescriptions[] = new IFieldDescription[index];
for( i = 0; i < index ; i ++ )
{
iFieldDescriptions[tmp_iFieldDescriptions[i].getIndex()] = tmp_iFieldDescriptions[i];
}