Blackmire.CppImplWalker.AppendFieldInitializers C# (CSharp) Method

AppendFieldInitializers() private method

private AppendFieldInitializers ( Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax node ) : void
node Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax
return void
        private void AppendFieldInitializers(ClassDeclarationSyntax node)
        {
            foreach (var fields in node.ChildNodes().OfType<FieldDeclarationSyntax>()
            .Where(f => f.RequiresInitialization(model)))
              {
            var vs = new List<Tuple<VariableDeclaratorSyntax, IFieldSymbol>>();
            foreach (var v in fields.Declaration.Variables)
            {
              var z = (IFieldSymbol) model.GetDeclaredSymbol(v);
              if (!z.IsStatic)
              {
            vs.Add(new Tuple<VariableDeclaratorSyntax, IFieldSymbol>(v,z));
              }
            }
            for (int i = 0; i < vs.Count; ++i)
            {
              var v = vs[i].Item1;
              var symbol = vs[i].Item2;
              cb.AppendWithIndent(v.Identifier.ToString()).Append("(");
              // if the field has an initer, use that instead
              if (v.Initializer != null)
              {
            cb.Append(v.Initializer.Value.ToString());
              }
              else
              {
            cb.Append(symbol.Type.GetDefaultValue());
              }
              cb.Append(")");
              if (i + 1 != vs.Count)
            cb.Append(",");
              cb.AppendLine();
            }
              }
        }