private void AddCodeComment(CodeTypeMember codeTypeMember, IEnumerable <ICodeCommentEntity> codeComments, bool isDocComment) { if (isDocComment) { CodeCommentStatementCollection descriptionCodeComment = CodeCommentHelper.BuildCodeCommentStatementCollection(codeComments); codeTypeMember.Comments.AddRange(descriptionCodeComment); } else { foreach (var codeComment in codeComments) { CodeCommentStatement descriptionCodeComment = CodeCommentHelper.BuildCodeCommentStatement(codeComment, isDocComment); codeTypeMember.Comments.Add(descriptionCodeComment); } } }
private void CreateStructureClass(Structure structure) { string className = structure.Name.UpperCaseFirstCharacter(); Console.WriteLine($"Processing structure class {structure.Name} [{className}()]"); CreateCompileUnit(out CodeCompileUnit compileUnit, out CodeNamespace codeNamespace, _ezspStructurePackage); CodeTypeDeclaration protocolClass = new CodeTypeDeclaration(className) { IsClass = true, TypeAttributes = System.Reflection.TypeAttributes.Public }; AddNamespaceImport(codeNamespace, _serializerPackage); StringBuilder descriptionStringBuilder = new StringBuilder(); descriptionStringBuilder.AppendLine($"Class to implement the Ember Structure \" {structure.Name} \"."); if (!string.IsNullOrEmpty(structure.Description)) { OutputWithLineBreak(descriptionStringBuilder, "", structure.Description); } ICodeCommentEntity descriptionCodeCommentEntity = new CodeCommentEntity { Tag = CodeCommentTag.Summary, DocumentationText = descriptionStringBuilder.ToString() }; CodeCommentStatement descriptionCodeComment = CodeCommentHelper.BuildCodeCommentStatement(descriptionCodeCommentEntity, true); protocolClass.Comments.Add(descriptionCodeComment); codeNamespace.Types.Add(protocolClass); CreateStructureConstructor(protocolClass); CreateStructureConstructor(protocolClass, true); CreateParameters(codeNamespace, protocolClass, structure.Parameters); CreateParameterSetters(structure.Parameters, codeNamespace, protocolClass); CreateParameterGetter(structure.Parameters, codeNamespace, protocolClass); CreateStructureSerializer(structure.Parameters, protocolClass); CreateStructureDeserializer(structure.Parameters, protocolClass); CreateToStringOverride(className, structure.Parameters, protocolClass); GenerateCode(compileUnit, className, "Structure/"); }
private void CreateCommandClass(string className, Command command, List <Parameter> parameters) { Console.WriteLine($"Processing command class {command.Name} [{className}()]"); CreateCompileUnit(out CodeCompileUnit compileUnit, out CodeNamespace codeNamespace, _ezspCommandPackage); CodeTypeDeclaration protocolClass = new CodeTypeDeclaration(className) { IsClass = true, TypeAttributes = System.Reflection.TypeAttributes.Public }; AddNamespaceImport(codeNamespace, _serializerPackage); StringBuilder descriptionStringBuilder = new StringBuilder(); descriptionStringBuilder.AppendLine($"Class to implement the Ember EZSP command \" {command.Name} \"."); if (!string.IsNullOrEmpty(command.Description)) { OutputWithLineBreak(descriptionStringBuilder, "", command.Description); } descriptionStringBuilder.AppendLine(" This class provides methods for processing EZSP commands."); ICodeCommentEntity descriptionCodeCommentEntity = new CodeCommentEntity { Tag = CodeCommentTag.Summary, DocumentationText = descriptionStringBuilder.ToString() }; CodeCommentStatement descriptionCodeComment = CodeCommentHelper.BuildCodeCommentStatement(descriptionCodeCommentEntity, true); protocolClass.Comments.Add(descriptionCodeComment); if (className.EndsWith("Request")) { protocolClass.BaseTypes.Add("EzspFrameRequest"); } else { protocolClass.BaseTypes.Add("EzspFrameResponse"); } codeNamespace.Types.Add(protocolClass); CodeMemberField frameIdCodeMember = CreateCodeConstantMember("FRAME_ID", typeof(int), command.Id); protocolClass.Members.Add(frameIdCodeMember); CreateParameters(codeNamespace, protocolClass, parameters); CreateParameterSetters(parameters, codeNamespace, protocolClass); CreateParameterGetter(parameters, codeNamespace, protocolClass); if (className.EndsWith("Request")) { CreateRequestConstructor(protocolClass); CreateRequestSerializer(parameters, protocolClass); } else { CreateResponseAndHandlerConstructor(parameters, protocolClass); } CreateToStringOverride(className, parameters, protocolClass); GenerateCode(compileUnit, className, "Command/"); }