diff --git a/capnpc-csharp/Generator/CommonSnippetGen.cs b/capnpc-csharp/Generator/CommonSnippetGen.cs index ddb9867..56d974e 100644 --- a/capnpc-csharp/Generator/CommonSnippetGen.cs +++ b/capnpc-csharp/Generator/CommonSnippetGen.cs @@ -93,5 +93,20 @@ namespace CapnpC.Generator LiteralExpression( SyntaxKind.NumericLiteralExpression, Literal($"0x{id:x}UL", id)); + + public static FieldDeclarationSyntax MakeTypeIdConst(ulong id, GenNames names) => + FieldDeclaration( + VariableDeclaration( + IdentifierName("UInt64")) + .WithVariables( + SingletonSeparatedList( + VariableDeclarator(names.TypeIdField.Identifier) + .WithInitializer( + EqualsValueClause(HexLiteral(id)))))) + .WithModifiers( + TokenList( + new[]{ + Token(SyntaxKind.PublicKeyword), + Token(SyntaxKind.ConstKeyword)})); } } diff --git a/capnpc-csharp/Generator/GenNames.cs b/capnpc-csharp/Generator/GenNames.cs index f842413..e4620d0 100644 --- a/capnpc-csharp/Generator/GenNames.cs +++ b/capnpc-csharp/Generator/GenNames.cs @@ -63,6 +63,7 @@ namespace CapnpC.Generator public string MemberAccessPathNameFormat { get; } public Name TaskParameter { get; } public Name EagerMethod { get; } + public Name TypeIdField { get; } public GenNames(GeneratorOptions options) { @@ -98,6 +99,7 @@ namespace CapnpC.Generator MemberAccessPathNameFormat = options.MemberAccessPathNameFormat; TaskParameter = new Name(options.TaskParameterName); EagerMethod = new Name(options.EagerMethodName); + TypeIdField = new Name(options.TypeIdFieldName); } public Name MakeTypeName(TypeDefinition def, NameUsage usage = NameUsage.Default) diff --git a/capnpc-csharp/Generator/GeneratorOptions.cs b/capnpc-csharp/Generator/GeneratorOptions.cs index 76faf93..58a0d80 100644 --- a/capnpc-csharp/Generator/GeneratorOptions.cs +++ b/capnpc-csharp/Generator/GeneratorOptions.cs @@ -38,5 +38,6 @@ namespace CapnpC.Generator public string MemberAccessPathNameFormat { get; set; } = "Path_{0}_{1}"; public string TaskParameterName { get; set; } = "task"; public string EagerMethodName { get; set; } = "Eager"; + public string TypeIdFieldName { get; set; } = "TypeId"; } }