WIP
This commit is contained in:
parent
31ee70e8c0
commit
e7417745fd
File diff suppressed because it is too large
Load Diff
|
@ -239,9 +239,9 @@ public class DataTypeWriter {
|
||||||
|
|
||||||
// Add dependency only if it's not a pointer (pointers can be forward declared)
|
// Add dependency only if it's not a pointer (pointers can be forward declared)
|
||||||
if (!isPointerType(componentDataType)) {
|
if (!isPointerType(componentDataType)) {
|
||||||
DataType baseType = getBaseDataType(componentDataType);
|
DataType depType = getImmediateDependencyType(componentDataType);
|
||||||
if (baseType != null && !isBuiltInType(baseType)) {
|
if (depType != null && !isBuiltInType(depType)) {
|
||||||
dependencies.add(baseType.getDisplayName());
|
dependencies.add(depType.getDisplayName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@ public class DataTypeWriter {
|
||||||
|
|
||||||
// Add dependency only if it's not a pointer
|
// Add dependency only if it's not a pointer
|
||||||
if (!isPointerType(dataType)) {
|
if (!isPointerType(dataType)) {
|
||||||
DataType depType = getBaseDataType(dataType);
|
DataType depType = getImmediateDependencyType(dataType);
|
||||||
if (depType != null && !isBuiltInType(depType)) {
|
if (depType != null && !isBuiltInType(depType)) {
|
||||||
dependencies.add(depType.getDisplayName());
|
dependencies.add(depType.getDisplayName());
|
||||||
}
|
}
|
||||||
|
@ -334,6 +334,20 @@ public class DataTypeWriter {
|
||||||
dt.getDisplayName().equals("double");
|
dt.getDisplayName().equals("double");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DataType getImmediateDependencyType(DataType dt) {
|
||||||
|
// Only unwrap arrays and bitfields, but preserve typedefs and other types
|
||||||
|
while (dt != null) {
|
||||||
|
if (dt instanceof Array) {
|
||||||
|
dt = ((Array) dt).getDataType();
|
||||||
|
} else if (dt instanceof BitFieldDataType) {
|
||||||
|
dt = ((BitFieldDataType) dt).getBaseDataType();
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dt;
|
||||||
|
}
|
||||||
|
|
||||||
private DataType getBaseDataType(DataType dt) {
|
private DataType getBaseDataType(DataType dt) {
|
||||||
while (dt != null) {
|
while (dt != null) {
|
||||||
if (dt instanceof Array) {
|
if (dt instanceof Array) {
|
||||||
|
|
Loading…
Reference in New Issue