private String getStruct(String prefix, TarsType type, List<TarsNamespace> namespaces) {
StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter(sw);
if (isTypeAtomic(type)) {
printPrimitive(out, prefix, "", 0, type, namespaces);
} else if (type.isVector()) {
printVector(out, prefix, "", 0, type, namespaces);
} else if (type.isMap()) {
printMap(out, prefix, "", 0, type, namespaces);
} else {
String structName = type.typeName();
for (TarsNamespace ns : namespaces) {
for (TarsStruct s : ns.structList()) {
if (!structName.isEmpty() && !structName.equals(s.structName())) {
continue;
}
int index = 0;
for (TarsStructMember m : s.memberList()) {
index++;
if (index > 1) {
out.println(",");
}
TarsType memberType = m.memberType();
if (isTypeAtomic(memberType)) {
printPrimitive(out, prefix, m.memberName(), m.tag(), memberType, namespaces);
} else if (memberType.isVector()) {
printVector(out, prefix, m.memberName(), m.tag(), memberType, namespaces);
} else if (memberType.isMap()) {
printMap(out, prefix, m.memberName(), m.tag(), memberType, namespaces);
} else {
printTars(out, prefix, m.memberName(), m.tag(), memberType, namespaces);
}
}
}
}
}
return sw.toString();
}