public void GenerateClass(ProtoMessage m) { if (options.NoGenerateImported && m.IsImported) { Console.Error.WriteLine("Skipping imported " + m.FullProtoName); return; } //Do not generate class code for external classes if (m.OptionExternal) { cw.Comment("Written elsewhere"); cw.Comment(m.OptionAccess + " " + m.OptionType + " " + m.CsType + " {}"); return; } //Default class cw.Summary(m.Comments); if (options.DataContractAttributes) { cw.Attribute("DataContract"); } cw.Bracket(m.OptionAccess + " partial " + m.OptionType + " " + m.CsType); if (options.GenerateDefaultConstructors) { GenerateCtorForDefaults(m); } GenerateEnums(m); GenerateProperties(m); //if(options.GenerateToString... // ... if (m.OptionPreserveUnknown) { cw.Summary("Values for unknown fields."); cw.WriteLine("public List<global::SilentOrbit.ProtocolBuffers.KeyValue> PreservedFields;"); cw.WriteLine(); } if (m.OptionTriggers) { cw.Comment("protected virtual void BeforeSerialize() {}"); cw.Comment("protected virtual void AfterDeserialize() {}"); cw.WriteLine(); } foreach (ProtoMessage sub in m.Messages.Values) { GenerateClass(sub); cw.WriteLine(); } cw.EndBracket(); return; }
public static void GenerateClassSerializer(ProtoMessage m, CodeWriter cw) { if (m.OptionExternal || m.OptionType == "interface") { //Don't make partial class of external classes or interfaces //Make separate static class for them cw.Bracket(m.OptionAccess + " class " + m.SerializerType); } else { cw.Attribute("System.Serializable()"); cw.Bracket(m.OptionAccess + " partial " + m.OptionType + " " + m.SerializerType); } GenerateReader(m, cw); GenerateWriter(m, cw); foreach (ProtoMessage sub in m.Messages.Values) { cw.WriteLine(); GenerateClassSerializer(sub, cw); } cw.EndBracket(); cw.WriteLine(); return; }
public void GenerateEnum(ProtoEnum m) { if (m.OptionExternal) { cw.Comment("Written elsewhere"); cw.Comment(m.Comments); cw.Comment(m.OptionAccess + " enum " + m.CsType); cw.Comment("{"); foreach (var epair in m.Enums) { cw.Summary(epair.Comment); cw.Comment(cw.IndentPrefix + epair.Name + " = " + epair.Value + ","); } cw.Comment("}"); return; } cw.Summary(m.Comments); if (m.OptionFlags) { cw.Attribute("global::System.FlagsAttribute"); } cw.Bracket(m.OptionAccess + " enum " + m.CsType); foreach (var epair in m.Enums) { cw.Summary(epair.Comment); cw.WriteLine(epair.Name + " = " + epair.Value + ","); } cw.EndBracket(); cw.WriteLine(); }
public static void GenerateClassSerializer(ProtoMessage m, CodeWriter cw, Options options) { if (m.OptionExternal || m.OptionType == "interface") { //Don't make partial class of external classes or interfaces //Make separate static class for them cw.Bracket(m.OptionAccess + " static class " + m.SerializerType); } else { cw.Attribute("System.Serializable()"); cw.Bracket(m.OptionAccess + " partial " + m.OptionType + " " + m.SerializerType); } GenerateReader(m, cw); GenerateWriter(m, cw, options); foreach (ProtoMessage sub in m.Messages.Values) { cw.WriteLine(); GenerateClassSerializer(sub, cw, options); } cw.EndBracket(); cw.WriteLine(); return; }
public void GenerateClassSerializer(ProtoMessage m) { if (options.NoGenerateImported && m.IsImported) { Console.Error.WriteLine("Skipping imported " + m.FullProtoName); return; } if (m.OptionExternal || m.OptionType == "interface") { //Don't make partial class of external classes or interfaces //Make separate static class for them cw.Bracket(m.OptionAccess + " static class " + m.SerializerType); } else { if (options.SerializableAttributes) { cw.Attribute("System.Serializable"); } cw.Bracket(m.OptionAccess + " partial " + m.OptionType + " " + m.SerializerType); } GenerateReader(m); GenerateWriter(m); foreach (ProtoMessage sub in m.Messages.Values) { cw.WriteLine(); GenerateClassSerializer(sub); } cw.EndBracket(); cw.WriteLine(); return; }
public void GenerateClassSerializer(ProtoMessage m) { if (options.NoGenerateImported && m.IsImported) { Console.Error.WriteLine("Skipping imported " + m.FullProtoName); return; } else { cw.Attribute("System.Serializable"); cw.Bracket("public partial class " + m.SerializerType); } GenerateReader(m); GenerateWriter(m); foreach (ProtoMessage sub in m.Messages.Values) { cw.WriteLine(); GenerateClassSerializer(sub); } cw.EndBracket(); cw.WriteLine(); return; }
public void GenerateClassSerializer(ProtoMessage m) { String identName = null; if (m.OptionIdentifier > 0) { identName = "MessageIdentifier"; cw.Attribute("ProtoBuf.MessageIdent(" + identName + ")"); } if (m.OptionExternal || m.OptionType == "interface") { //Don't make partial class of external classes or interfaces //Make separate static class for them cw.Bracket(m.OptionAccess + " partial class " + m.SerializerType); } else { cw.Attribute("System.Serializable()"); cw.Bracket(m.OptionAccess + " partial " + m.OptionType + " " + m.SerializerType); } if (m.OptionIdentifier > 0) { cw.WriteLine(String.Format("public const uint {0} = 0x{1:x8};", identName, m.OptionIdentifier)); cw.WriteLine(); } GenerateReader(m); GenerateWriter(m); foreach (ProtoMessage sub in m.Messages.Values) { cw.WriteLine(); GenerateClassSerializer(sub); } cw.EndBracket(); cw.WriteLine(); return; }
public void GenerateEnum(ProtoEnum m) { if (options.NoGenerateImported && m.IsImported) { Console.Error.WriteLine("Skipping imported enum " + m.FullProtoName); return; } cw.Summary(m.Comments); if (m.OptionFlags) { cw.Attribute("System.FlagsAttribute"); } cw.Bracket("public enum " + m.CsType); foreach (var epair in m.Enums) { cw.Summary(epair.Comment); cw.WriteLine(epair.Name + " = " + epair.Value + ","); } cw.EndBracket(); cw.WriteLine(); }