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(); }
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(); }
private static void WriteInterfaceWrapper(CCodeWriterText c, INamedTypeSymbol iface, INamedTypeSymbol namedTypeSymbol) { new CCodeInterfaceWrapperClass(namedTypeSymbol, iface).WriteTo(c); c.EndStatement(); new CCodeInterfaceCastOperatorDeclaration(namedTypeSymbol, iface).WriteTo(c); }