/// <summary>
 /// Generate the body of the <c>encode</c> function for the given <see cref="TopLevelDefinition"/>.
 /// </summary>
 /// <param name="definition">The definition to generate code for.</param>
 /// <returns>The generated CPlusPlus <c>encode</c> function body.</returns>
 public string CompileEncode(TopLevelDefinition definition)
 {
     return(definition switch
     {
         MessageDefinition d => CompileEncodeMessage(d),
         StructDefinition d => CompileEncodeStruct(d),
         UnionDefinition d => CompileEncodeUnion(d),
         _ => throw new InvalidOperationException($"invalid CompileEncode kind: {definition}"),
     });
Esempio n. 2
0
 public DuplicateOpcodeException(TopLevelDefinition definition)
     : base($"Multiple definitions for opcode '{definition.OpcodeAttribute?.Value}'", definition.Span, 110)
 {
 }
Esempio n. 3
0
 public UnionBranch(byte discriminator, TopLevelDefinition definition)
 {
     Discriminator = discriminator;
     Definition    = definition;
 }