Example #1
0
 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);
         }
     }
 }
Example #2
0
        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/");
        }
Example #3
0
        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/");
        }