Blackmire.CppHeaderWalker.VisitMethodDeclaration C# (CSharp) Method

VisitMethodDeclaration() public method

public VisitMethodDeclaration ( Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax node ) : void
node Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax
return void
        public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
        {
            bool parentIsInterface = node.Parent is InterfaceDeclarationSyntax;

              var s = model.GetDeclaredSymbol(node);
              var builder = tcb.GetBuilderFor(s.DeclaredAccessibility);

              builder.AppendIndent();

              // check if function has template arguments
              if (s.IsGenericMethod)
              {
            builder.Append("template <");

            int len = s.TypeArguments.Length;
            for (int i = 0; i < len; ++i)
            {
              builder.Append("typename ");
              builder.Append(s.TypeArguments[i].Name);
              if (i + 1 != len)
            builder.Append(", ");
            }

            builder.Append("> ");
              }

              builder.Append("virtual ", parentIsInterface || s.IsVirtual);
              builder.Append("static ", s.IsStatic);

              builder.Append(node.ReturnType.ToString());
              builder.Append(" ");
              builder.Append(node.Identifier.ToString());
              builder.Append("(");
              var pars = node.ParameterList.Parameters;
              for (int i = 0; i < pars.Count; ++i)
              {
            var p = pars[i];
            var symbol = model.GetDeclaredSymbol(p);
            builder.Append(ArgumentTypeFor(symbol.Type)).Append(" ").Append(p.Identifier.ToString());
            if (i + 1 < pars.Count)
              builder.Append(", ");
              }
              builder.Append(")");
              builder.Append(" = 0", parentIsInterface);
              builder.AppendLine(";");
        }