private void GenMessageProto(MessageDef messageDef, int indent, TextWriter sw)
{
const string c_Indents = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
string indentStr = c_Indents.Substring(0, indent);
try {
sw.WriteLine();
sw.WriteLine("{0}message {1}", indentStr, messageDef.m_TypeName);
sw.WriteLine("{0}{{", indentStr);
foreach (var enumDefPair in messageDef.m_EnumTypes) {
GenEnumTypeProto(enumDefPair.Value, indent + 1, sw);
}
foreach (var messageDefPair in messageDef.m_Messages) {
GenMessageProto(messageDefPair.Value, indent + 1, sw);
}
foreach (MemberDef memberDef in messageDef.m_Members) {
string type = GetProtoType(memberDef.m_TypeName);
if (null != memberDef.m_Default) {
sw.WriteLine("{0}\t{1} {2} {3} = {4}[default = {5}];", indentStr, memberDef.m_Modifier, type, memberDef.m_MemberName, memberDef.m_Order, memberDef.m_Default);
} else {
sw.WriteLine("{0}\t{1} {2} {3} = {4};", indentStr, memberDef.m_Modifier, type, memberDef.m_MemberName, memberDef.m_Order);
}
}
sw.WriteLine("{0}}}", indentStr);
} catch (Exception ex) {
Console.WriteLine(ex);
}
}