Esempio n. 1
0
        private static void WriteNamespaceOpen(INamedTypeSymbol namedTypeSymbol, CCodeWriterText c)
        {
            bool any = false;

            foreach (var namespaceNode in namedTypeSymbol.ContainingNamespace.EnumNamespaces())
            {
                c.TextSpan("namespace ");
                c.WriteNamespaceName(namespaceNode);
                c.TextSpan(" { ");
                any = true;
            }

            if (any)
            {
                c.IncrementIndent();
                c.NewLine();
            }

            /*
             * // include using of namespace
             * c.TextSpan("using");
             * c.WhiteSpace();
             * c.TextSpan("namespace");
             * c.WhiteSpace();
             * c.WriteNamespace(namedTypeSymbol.ContainingNamespace);
             * c.EndStatement();
             * c.Separate();
             */

            // write alias for _
            c.TextSpan("namespace");
            c.WhiteSpace();
            c.TextSpan("_");
            c.WhiteSpace();
            c.TextSpan("=");
            c.WhiteSpace();
            c.WriteNamespace(namedTypeSymbol.ContainingNamespace);
            c.EndStatement();
            c.Separate();
            c.NewLine();
        }
Esempio n. 2
0
        private static void WriteEnum(IndentedTextWriter itw, CCodeWriterText c, INamedTypeSymbol namedTypeSymbol)
        {
            itw.WriteLine();
            itw.Write("enum class ");
            c.WriteTypeName(namedTypeSymbol, false, true);
            itw.Write(" : ");
            c.WriteType(namedTypeSymbol.EnumUnderlyingType);

            c.NewLine();
            c.OpenBlock();

            var constantValueTypeDiscriminator = namedTypeSymbol.EnumUnderlyingType.SpecialType.GetDiscriminator();

            var any = false;

            foreach (var constValue in namedTypeSymbol.GetMembers().OfType <IFieldSymbol>().Where(f => f.IsConst))
            {
                if (any)
                {
                    c.TextSpan(",");
                    c.WhiteSpace();
                }

                c.TextSpan("c_");
                c.WriteName(constValue);
                if (constValue.ConstantValue != null)
                {
                    c.TextSpan(" = ");
                    new Literal {
                        Value = ConstantValue.Create(constValue.ConstantValue, constantValueTypeDiscriminator)
                    }
                    .WriteTo(c);
                }

                any = true;
            }

            c.EndBlockWithoutNewLine();
            c.EndStatement();
        }
Esempio n. 3
0
 private static void WriteInterfaceWrapper(CCodeWriterText c, INamedTypeSymbol iface, INamedTypeSymbol namedTypeSymbol)
 {
     new CCodeInterfaceWrapperClass(namedTypeSymbol, iface).WriteTo(c);
     c.EndStatement();
     new CCodeInterfaceCastOperatorDeclaration(namedTypeSymbol, iface).WriteTo(c);
 }