/// <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}"), });
public DuplicateOpcodeException(TopLevelDefinition definition) : base($"Multiple definitions for opcode '{definition.OpcodeAttribute?.Value}'", definition.Span, 110) { }
public UnionBranch(byte discriminator, TopLevelDefinition definition) { Discriminator = discriminator; Definition = definition; }