mirror of
https://github.com/zap-proto/cs.git
synced 2026-10-30 15:05:32 +00:00
Finishes the in-flight capnp→ZAP rebrand on this branch. The prior commits
renamed identifiers/namespaces/files/projects (Capnp.Net.Runtime→Zap.Net.Runtime,
CapnpC→ZapC, .capnp→.zap) but left the human-readable brand name "Cap'n Proto"
throughout doc-comments, .csproj/.nuspec descriptions, README, MSBuild .xaml
rule display names, and the generated XML doc. This completes brand neutrality:
- Replace 154 "Cap'n Proto" / 4 "Cap'n-Proto" / 1 "Cap'n'p" prose occurrences
with "ZAP" across 32 first-party files (runtime, generator, zapc-csharp,
MSBuild integration, chocolatey nuspecs, README, docs, XML doc).
- Revert the LICENSE provenance URL to the real upstream fork
(c80k/capnproto-dotnetcore) — upstream-fork license headers must stay.
- Canonicalize project/repo URLs to github.com/zap-proto/cs (were fabricated
c80k/zap-dotnetcore) in csproj/nuspec/VERIFICATION/README badges.
- Canonicalize docs URLs zap-protocol(.github.io|/zap-cs|/zap-cpp-core)
→ zap-proto.dev / github.com/zap-proto/{cs,cpp-core}.
- Collapse redundant "zap \"ZAP\"" PackageTags to "zap".
Verified consistent (no toolchain on host): every .sln/.csproj ProjectReference
resolves; all namespaces are Zap*/ZapC*; MSBuild task chain
(GenerateZapFileCodeBehindTask, ZapFiles ItemGroup, _ZapcCsharp_TaskAssembly)
is uniformly renamed; props/targets/xaml/coverage/chocolatey carry no capnp.
Deliberately preserved as upstream-derived test data (not first-party source):
upstream Cap'n Proto schema fixtures (rpc.zap, rpc-twoparty.zap, json.zap,
rpc-csharp.zap), golden compiler-error outputs (errors.txt), and the
machine-generated DO-NOT-EDIT test.zap.{c++,h}. Their "Cap'n Proto" strings are
the literal output of the external schema compiler the compat test matches.
92 lines
3.2 KiB
C#
92 lines
3.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using ZapC.CSharp.Generator.Model;
|
|
using Microsoft.CodeAnalysis;
|
|
using Microsoft.CodeAnalysis.CSharp;
|
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
|
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
|
using static ZapC.CSharp.Generator.CodeGen.SyntaxHelpers;
|
|
|
|
namespace ZapC.CSharp.Generator.CodeGen
|
|
{
|
|
class CommonSnippetGen
|
|
{
|
|
readonly GenNames _names;
|
|
|
|
public CommonSnippetGen(GenNames names)
|
|
{
|
|
_names = names;
|
|
}
|
|
|
|
public EnumDeclarationSyntax MakeUnionSelectorEnum(TypeDefinition def)
|
|
{
|
|
var whichEnum = EnumDeclaration(_names.UnionDiscriminatorEnum.ToString())
|
|
.AddModifiers(Public)
|
|
.AddBaseListTypes(SimpleBaseType(_names.Type<ushort>(Nullability.NonNullable)));
|
|
|
|
var discFields = def.Fields.Where(f => f.DiscValue.HasValue);
|
|
|
|
foreach (var discField in discFields)
|
|
{
|
|
whichEnum = whichEnum.AddMembers(
|
|
EnumMemberDeclaration(_names.GetCodeIdentifier(discField).Identifier)
|
|
.WithEqualsValue(
|
|
EqualsValueClause(LiteralExpression(
|
|
SyntaxKind.NumericLiteralExpression,
|
|
Literal(discField.DiscValue.Value)))));
|
|
}
|
|
|
|
var ndecl = EnumMemberDeclaration(_names.UnionDiscriminatorUndefined.ToString()).WithEqualsValue(
|
|
EqualsValueClause(
|
|
LiteralExpression(
|
|
SyntaxKind.NumericLiteralExpression,
|
|
Literal(SchemaModel.NoDiscriminant))));
|
|
|
|
whichEnum = whichEnum.AddMembers(ndecl);
|
|
|
|
return whichEnum;
|
|
}
|
|
|
|
public EnumDeclarationSyntax MakeEnum(TypeDefinition def)
|
|
{
|
|
var decl = EnumDeclaration(_names.GetCodeIdentifier(def))
|
|
.AddAttributeLists(_names.MakeTypeDecorationAttributes(def.Id))
|
|
.AddModifiers(_names.TypeVisibilityModifier)
|
|
.AddBaseListTypes(SimpleBaseType(_names.Type<ushort>(Nullability.NonNullable)));
|
|
|
|
foreach (var enumerant in def.Enumerants.OrderBy(e => e.CodeOrder))
|
|
{
|
|
var mdecl = EnumMemberDeclaration(enumerant.CsLiteral ?? enumerant.Literal);
|
|
|
|
if (enumerant.Ordinal.HasValue)
|
|
{
|
|
mdecl = mdecl.WithEqualsValue(
|
|
EqualsValueClause(
|
|
LiteralExpression(
|
|
SyntaxKind.NumericLiteralExpression,
|
|
Literal(enumerant.Ordinal.Value))));
|
|
}
|
|
|
|
decl = decl.AddMembers(mdecl);
|
|
}
|
|
|
|
return decl;
|
|
}
|
|
|
|
public static IEnumerable<SyntaxNodeOrToken> MakeCommaSeparatedList(IEnumerable<ExpressionSyntax> expressions)
|
|
{
|
|
bool first = true;
|
|
|
|
foreach (var expr in expressions)
|
|
{
|
|
if (first)
|
|
first = false;
|
|
else
|
|
yield return Token(SyntaxKind.CommaToken);
|
|
|
|
yield return expr;
|
|
}
|
|
}
|
|
}
|
|
}
|