diff --git a/README.md b/README.md index 1cd3266b8..fcc38312c 100644 --- a/README.md +++ b/README.md @@ -2,23 +2,36 @@ `xdrgen` is a code generator that takes XDR IDL files (`.x` files) as specified in [RFC 4506](http://tools.ietf.org/html/rfc4506.html) and provides the AST to -code generators. It can be used as a library with custom generators, or for -legacy purposes as a CLI with any of the built-in legacy generators. +code generators. It is intended to be used as a library with custom generators. `xdrgen` requires ruby 3.1 to 3.3 to run. ## Status -Xdrgen is an early project but also relatively stable and major changes have -not been made to the library for sometime. +Xdrgen is a relatively stable library and major changes have not been made to +it for sometime. Aside from the test fixtures in [spec/fixtures](spec/fixtures), the only .x files that have been tested with it are the .x files used for the [Stellar protocol](https://github.com/stellar/stellar-xdr). -If you're building a new code generator, the preferred way to provide a code -generator to xdrgen is to use it as a library. See below for examples for how -to do so. +> [!NOTE] +> **Generators are no longer maintained in this repository.** +> +> If you're building a code generator, use xdrgen as a library (see below). +> +> Generators that were previously included (Python, Java, Rust) have been moved +> out to other repositories close to the Stellar XDR libraries they generated. +> This happened in https://github.com/stellar/xdrgen/pull/226 and +> https://github.com/stellar/xdrgen/pull/221. +> +> For any that were not moved but deleted (C#, Elixir, Ruby), they can be found +> in the repository history at commit +> [2efacde](https://github.com/stellar/xdrgen/tree/2efacde612445d97e0548131ed699e8130bdeb7b) +> if they need to be used with the binary, otherwise any new maintenance of code +> generators should happen using xdrgen as a library. +> +> The JavaScript and Go generators still live here at this time. ## Usage as a library @@ -67,18 +80,7 @@ The command line: `xdrgen [-o OUTPUT_DIR] [-l LANGUAGE] [-n NAMESPACE] [INPUT_FILES ...]` -Xdrgen has support for built-in generators via the CLI's `-l` option, but they -are not maintained, not tested, and are preserved for legacy usage. +The CLI still has the following built-in generators: -- ruby: complete support -- javascript: complete support -- golang: currently using a fork of go-xdr, but has complete support -- elixir: support is experimental as the SDK is in early development. Generated - code requires [:exdr](https://github.com/revelrylabs/exdr) in your deps -- C#: complete support - -## Contributing new generators / languages - -Instead of contributing new generators to this repository, use xdrgen as a -library and maintain the generator independently where you can test and -maintain it. +- javascript +- golang diff --git a/lib/xdrgen/cli.rb b/lib/xdrgen/cli.rb index 9a7a8980f..0167a24b7 100644 --- a/lib/xdrgen/cli.rb +++ b/lib/xdrgen/cli.rb @@ -5,9 +5,9 @@ module CLI def self.run(args) args = args.dup opts = Slop.parse! args do - banner 'Usage: xdrgen -o OUTPUT_DIR INPUT --language=ruby' + banner 'Usage: xdrgen -o OUTPUT_DIR INPUT --language=javascript' on 'o', 'output=', 'The output directory' - on 'l', 'language=', 'The output language', default: 'ruby' + on 'l', 'language=', 'The output language', default: 'javascript' on 'n', 'namespace=', '"namespace" to generate code within (language-specific)' end diff --git a/lib/xdrgen/compilation.rb b/lib/xdrgen/compilation.rb index 6443b5a80..3c3fe6a56 100644 --- a/lib/xdrgen/compilation.rb +++ b/lib/xdrgen/compilation.rb @@ -2,7 +2,7 @@ module Xdrgen class Compilation extend Memoist - def initialize(source_paths, output_dir:".", language: :ruby, generator: nil, namespace: nil, options: {}) + def initialize(source_paths, output_dir:".", language: nil, generator: nil, namespace: nil, options: {}) raise "An empty list of source paths (.x files) provided. At least one source file must be provided to compile." if source_paths.empty? @source_paths = source_paths @output_dir = output_dir diff --git a/lib/xdrgen/generators.rb b/lib/xdrgen/generators.rb index 53ef67c24..5aef3e958 100644 --- a/lib/xdrgen/generators.rb +++ b/lib/xdrgen/generators.rb @@ -2,11 +2,8 @@ module Xdrgen::Generators extend ActiveSupport::Autoload autoload :Base - autoload :Ruby autoload :Go autoload :Javascript - autoload :Elixir - autoload :Csharp def self.for_language(language) const_get language.to_s.classify diff --git a/lib/xdrgen/generators/csharp.rb b/lib/xdrgen/generators/csharp.rb deleted file mode 100644 index 0c1470caf..000000000 --- a/lib/xdrgen/generators/csharp.rb +++ /dev/null @@ -1,580 +0,0 @@ -module Xdrgen - module Generators - class Csharp < Xdrgen::Generators::Base - def generate - render_lib - render_definitions(@top) - end - - def render_lib; end - - def render_definitions(node) - node.namespaces.each { |n| render_definitions n } - node.definitions.each(&method(:render_definition)) - end - - def render_definition(defn) - case defn - when AST::Definitions::Struct - render_element 'public class', defn do |out| - render_struct defn, out - render_nested_definitions defn, out - end - when AST::Definitions::Enum - render_element 'public class', defn do |out| - render_enum defn, out - end - when AST::Definitions::Union - render_element 'public class', defn do |out| - render_union defn, out - render_nested_definitions defn, out - end - when AST::Definitions::Typedef - render_element 'public class', defn do |out| - render_typedef defn, out - end - end - end - - def render_nested_definitions(defn, out) - return unless defn.respond_to? :nested_definitions - defn.nested_definitions.each do |ndefn| - case ndefn - when AST::Definitions::Struct - name = name ndefn - out.puts "public class #{name} {" - out.indent do - render_struct ndefn, out - render_nested_definitions ndefn, out - end - out.puts '}' - when AST::Definitions::Enum - name = name ndefn - out.puts "public class #{name} {" - out.indent do - render_enum ndefn, out - end - out.puts '}' - when AST::Definitions::Union - name = name ndefn - out.puts "public class #{name} {" - out.indent do - render_union ndefn, out - render_nested_definitions ndefn, out - end - out.puts '}' - when AST::Definitions::Typedef - name = name ndefn - out.puts "public class #{name} {" - out.indent do - render_typedef ndefn, out - end - out.puts '}' - end - end - end - - def render_element(type, element, post_name = '') - path = element.name.camelize + '.cs' - name = name_string element.name - out = @output.open(path) - render_top_matter out - render_source_comment out, element - - out.puts "#{type} #{name} #{post_name} {" - out.indent do - yield out - out.unbreak - end - out.puts '}' - out.puts '}' - end - - def render_enum(enum, out) - enumname = enum.name + 'Enum' - - out.puts "public enum #{enumname} {" - out.balance_after /,[\s]*/ do - enum.members.each do |em| - out.puts "#{em.name} = #{em.value}," - end - end - out.puts "}\n" - out.puts <<-EOS.strip_heredoc - public #{enumname} InnerValue {get; set;} = default(#{enumname}); - - public static #{enum.name} Create(#{enumname} v) - { - return new #{enum.name} { - InnerValue = v - }; - } - - public static #{name_string enum.name} Decode(XdrDataInputStream stream) { - int value = stream.ReadInt(); - switch (value) { - EOS - out.indent 2 do - enum.members.each do |em| - out.puts "case #{em.value}: return Create(#{enumname}.#{em.name});" - end - end - out.puts <<-EOS.strip_heredoc - default: - throw new Exception("Unknown enum value: " + value); - } - } - - public static void Encode(XdrDataOutputStream stream, #{name_string enum.name} value) { - stream.WriteInt((int)value.InnerValue); - } - EOS - out.break - end - - def render_struct(struct, out) - out.puts "public #{name struct} () {}" - struct.members.each do |m| - out.puts <<-EOS.strip_heredoc - public #{decl_string(m.declaration)} #{m.name.camelize} {get; set;} - EOS - end - out.puts "\n" - out.puts "public static void Encode(XdrDataOutputStream stream, #{name struct} encoded#{name struct}) {" - struct.members.each do |m| - out.indent do - encode_member "encoded#{name struct}", m, out - end - end - out.puts '}' - - out.puts <<-EOS.strip_heredoc - public static #{name struct} Decode(XdrDataInputStream stream) { - #{name struct} decoded#{name struct} = new #{name struct}(); - EOS - struct.members.each do |m| - out.indent do - decode_member "decoded#{name struct}", m, out - end - end - out.indent do - out.puts "return decoded#{name struct};" - end - out.puts '}' - - out.break - end - - def render_typedef(typedef, out) - out.puts <<-EOS.strip_heredoc - public #{decl_string typedef.declaration} InnerValue {get; set;} = default(#{decl_string typedef.declaration}); - - public #{typedef.name.camelize}() {} - - public #{typedef.name.camelize}(#{decl_string typedef.declaration} value) - { - InnerValue = value; - } - - EOS - out.puts "public static void Encode(XdrDataOutputStream stream, #{name typedef} encoded#{name typedef}) {" - encode_innervalue_member "encoded#{name typedef}", typedef, out - out.puts '}' - - out.puts <<-EOS.strip_heredoc - public static #{name typedef} Decode(XdrDataInputStream stream) { - #{name typedef} decoded#{name typedef} = new #{name typedef}(); - EOS - decode_innervalue_member "decoded#{name typedef}", typedef, out - out.indent do - out.puts "return decoded#{name typedef};" - end - out.puts '}' - end - - def render_union(union, out) - has_inner_value = false - - out.puts "public #{name union} () {}" - out.puts <<-EOS.strip_heredoc - - public #{type_string union.discriminant.type} Discriminant { get; set; } = new #{type_string union.discriminant.type}(); - - EOS - union.arms.each do |arm| - next if arm.void? - out.puts <<-EOS.strip_heredoc - public #{decl_string(arm.declaration)} #{arm.name.camelize} {get; set;} - EOS - end - - out.puts "public static void Encode(XdrDataOutputStream stream, #{name union} encoded#{name union}) {" - if union.discriminant.type.is_a?(AST::Typespecs::Int) - out.puts "stream.WriteInt((int)encoded#{name union}.Discriminant);" - out.puts "switch (encoded#{name union}.Discriminant) {" - # elsif [discriminant is AST::Definitions::Typedef] - # out.puts "stream.writeInt(encoded#{name union}.getDiscriminant().get#{name union.discriminant.type}());" - else - has_inner_value = true - out.puts "stream.WriteInt((int)encoded#{name union}.Discriminant.InnerValue);" - out.puts "switch (encoded#{name union}.Discriminant.InnerValue) {" - end - - union.arms.each do |arm| - case arm - when AST::Definitions::UnionDefaultArm - out.puts 'default:' - else - arm.cases.each do |kase| - if kase.value.is_a?(AST::Identifier) - out.puts "case #{type_string union.discriminant.type}.#{type_string union.discriminant.type}Enum.#{kase.value.name}:" - else - out.puts "case #{kase.value.value}:" - end - end - end - encode_member "encoded#{name union}", arm, out - out.puts 'break;' - end - out.puts "}\n}" - - out.puts "public static #{name union} Decode(XdrDataInputStream stream) {" - out.puts "#{name union} decoded#{name union} = new #{name union}();" - if union.discriminant.type.is_a?(AST::Typespecs::Int) - out.puts 'int discriminant = stream.ReadInt();' - out.puts "decoded#{name union}.Discriminant = discriminant;" - out.puts "switch (decoded#{name union}.Discriminant) {" - else - out.puts "#{name union.discriminant.type} discriminant = #{name union.discriminant.type}.Decode(stream);" - out.puts "decoded#{name union}.Discriminant = discriminant;" - out.puts "switch (decoded#{name union}.Discriminant.InnerValue) {" - end - - union.arms.each do |arm| - case arm - when AST::Definitions::UnionDefaultArm - out.puts 'default:' - else - arm.cases.each do |kase| - if kase.value.is_a?(AST::Identifier) - out.puts "case #{type_string union.discriminant.type}.#{type_string union.discriminant.type}Enum.#{kase.value.name}:" - else - out.puts "case #{kase.value.value}:" - end - end - end - decode_member "decoded#{name union}", arm, out - out.puts 'break;' - end - out.puts "}\n" - out.indent do - out.puts "return decoded#{name union};" - end - out.puts '}' - - out.break - end - - def render_top_matter(out) - out.puts <<-EOS.strip_heredoc - // Automatically generated by xdrgen - // DO NOT EDIT or your changes may be overwritten - using System; - - namespace #{@namespace} { - EOS - out.break - end - - def render_source_comment(out, defn) - return if defn.is_a?(AST::Definitions::Namespace) - - out.puts <<-EOS.strip_heredoc - // === xdr source ============================================================ - - EOS - - out.puts '// ' + defn.text_value.split("\n").join("\n// ") - - out.puts <<-EOS.strip_heredoc - - // =========================================================================== - EOS - end - - def encode_innervalue_member(value, member, out) - case member.declaration - when AST::Declarations::Void - return - end - - if member.type.sub_type == :optional - out.puts "if (#{value}.InnerValue != null) {" - out.puts 'stream.WriteInt(1);' - end - - case member.declaration - when AST::Declarations::Opaque - out.puts "int #{member.name}size = #{value}.InnerValue.Length;" - unless member.declaration.fixed? - out.puts "stream.WriteInt(#{member.name}size);" - end - out.puts <<-EOS.strip_heredoc - stream.Write(#{value}.InnerValue, 0, #{member.name}size); - EOS - when AST::Declarations::Array - out.puts "int #{member.name}size = #{value}.InnerValue.Length;" - unless member.declaration.fixed? - out.puts "stream.WriteInt(#{member.name}size);" - end - out.puts <<-EOS.strip_heredoc - for (int i = 0; i < #{member.name}size; i++) { - #{encode_type member.declaration.type, "#{value}.InnerValue[i]"}; - } - EOS - else - out.puts "#{encode_type member.declaration.type, "#{value}.InnerValue"};" - end - if member.type.sub_type == :optional - out.puts '} else {' - out.puts 'stream.WriteInt(0);' - out.puts '}' - end - end - - def encode_member(value, member, out) - case member.declaration - when AST::Declarations::Void - return - end - - if member.type.sub_type == :optional - out.puts "if (#{value}.#{member.name.camelize} != null) {" - out.puts 'stream.WriteInt(1);' - end - case member.declaration - when AST::Declarations::Opaque - out.puts "int #{member.name}size = #{value}.#{member.name.camelize}.Length;" - unless member.declaration.fixed? - out.puts "stream.WriteInt(#{member.name}size);" - end - out.puts <<-EOS.strip_heredoc - stream.Write(#{value}.#{member.name.camelize}, 0, #{member.name}size); - EOS - when AST::Declarations::Array - out.puts "int #{member.name}size = #{value}.#{member.name.camelize}.Length;" - unless member.declaration.fixed? - out.puts "stream.WriteInt(#{member.name}size);" - end - out.puts <<-EOS.strip_heredoc - for (int i = 0; i < #{member.name}size; i++) { - #{encode_type member.declaration.type, "#{value}.#{member.name.camelize}[i]"}; - } - EOS - else - out.puts "#{encode_type member.declaration.type, "#{value}.#{member.name.camelize}"};" - end - if member.type.sub_type == :optional - out.puts '} else {' - out.puts 'stream.WriteInt(0);' - out.puts '}' - end - end - - def encode_type(type, value) - case type - when AST::Typespecs::Int - "stream.WriteInt(#{value})" - when AST::Typespecs::UnsignedInt - "stream.WriteUInt(#{value})" - when AST::Typespecs::Hyper - "stream.WriteLong(#{value})" - when AST::Typespecs::UnsignedHyper - "stream.WriteULong(#{value})" - when AST::Typespecs::Float - "stream.WriteFloat(#{value})" - when AST::Typespecs::Double - "stream.WriteDouble(#{value})" - when AST::Typespecs::Quadruple - raise 'cannot render quadruple in c#' - when AST::Typespecs::Bool - "stream.WriteInt(#{value} ? 1 : 0)" - when AST::Typespecs::String - "stream.WriteString(#{value})" - when AST::Typespecs::Simple - "#{name type.resolved_type}.Encode(stream, #{value})" - when AST::Concerns::NestedDefinition - "#{name type}.Encode(stream, #{value})" - else - raise "Unknown typespec: #{type.class.name}" - end - end - - def decode_innervalue_member(value, member, out) - case member.declaration - when AST::Declarations::Void - return - end - if member.type.sub_type == :optional - out.puts <<-EOS.strip_heredoc - int #{member.name.camelize}Present = stream.ReadInt(); - if (#{member.name.camelize}Present != 0) { - EOS - end - case member.declaration - when AST::Declarations::Opaque - if member.declaration.fixed? - out.puts "int #{member.name}size = #{member.declaration.size};" - else - out.puts "int #{member.name}size = stream.ReadInt();" - end - out.puts <<-EOS.strip_heredoc - #{value}.InnerValue = new byte[#{member.name}size]; - stream.Read(#{value}.InnerValue, 0, #{member.name}size); - EOS - when AST::Declarations::Array - if member.declaration.fixed? - out.puts "int #{member.name}size = #{member.declaration.size};" - else - out.puts "int #{member.name}size = stream.ReadInt();" - end - out.puts <<-EOS.strip_heredoc - #{value}.InnerValue = new #{type_string member.type}[#{member.name}size]; - for (int i = 0; i < #{member.name}size; i++) { - #{value}.InnerValue[i] = #{decode_type member.declaration.type}; - } - EOS - else - out.puts "#{value}.InnerValue = #{decode_type member.declaration.type};" - end - out.puts '}' if member.type.sub_type == :optional - end - - def decode_member(value, member, out) - case member.declaration - when AST::Declarations::Void - return - end - if member.type.sub_type == :optional - out.puts <<-EOS.strip_heredoc - int #{member.name.camelize}Present = stream.ReadInt(); - if (#{member.name.camelize}Present != 0) { - EOS - end - case member.declaration - when AST::Declarations::Opaque - if member.declaration.fixed? - out.puts "int #{member.name}size = #{member.declaration.size};" - else - out.puts "int #{member.name}size = stream.ReadInt();" - end - out.puts <<-EOS.strip_heredoc - #{value}.#{member.name.camelize} = new byte[#{member.name}size]; - stream.Read(#{value}.#{member.name.camelize},0,#{member.name}size); - EOS - when AST::Declarations::Array - if member.declaration.fixed? - out.puts "int #{member.name}size = #{member.declaration.size};" - else - out.puts "int #{member.name}size = stream.ReadInt();" - end - out.puts <<-EOS.strip_heredoc - #{value}.#{member.name.camelize} = new #{type_string member.type}[#{member.name}size]; - for (int i = 0; i < #{member.name}size; i++) { - #{value}.#{member.name.camelize}[i] = #{decode_type member.declaration.type}; - } - EOS - else - out.puts "#{value}.#{member.name.camelize} = #{decode_type member.declaration.type};" - end - out.puts '}' if member.type.sub_type == :optional - end - - def decode_type(type) - case type - when AST::Typespecs::Int - 'stream.ReadInt()' - when AST::Typespecs::UnsignedInt - 'stream.ReadUInt()' - when AST::Typespecs::Hyper - 'stream.ReadLong()' - when AST::Typespecs::UnsignedHyper - 'stream.ReadULong()' - when AST::Typespecs::Float - 'stream.ReadFloat()' - when AST::Typespecs::Double - 'stream.ReadDouble()' - when AST::Typespecs::Quadruple - raise 'cannot render quadruple in c#' - when AST::Typespecs::Bool - 'stream.ReadInt() == 1 ? true : false' - when AST::Typespecs::String - 'stream.ReadString()' - when AST::Typespecs::Simple - "#{name type.resolved_type}.Decode(stream)" - when AST::Concerns::NestedDefinition - "#{name type}.Decode(stream)" - else - raise "Unknown typespec: #{type.class.name}" - end - end - - def decl_string(decl) - case decl - when AST::Declarations::Opaque - 'byte[]' - when AST::Declarations::String - 'String' - when AST::Declarations::Array - "#{type_string decl.type}[]" - when AST::Declarations::Optional - type_string(decl.type).to_s - when AST::Declarations::Simple - type_string(decl.type) - else - raise "Unknown declaration type: #{decl.class.name}" - end - end - - def type_string(type) - case type - when AST::Typespecs::Int - 'int' - when AST::Typespecs::UnsignedInt - 'uint' - when AST::Typespecs::Hyper - 'long' - when AST::Typespecs::UnsignedHyper - 'ulong' - when AST::Typespecs::Float - 'float' - when AST::Typespecs::Double - 'double' - when AST::Typespecs::Quadruple - 'Tuple' - when AST::Typespecs::Bool - 'bool' - when AST::Typespecs::Opaque - "Byte[#{type.size}]" - when AST::Typespecs::Simple - name type.resolved_type - when AST::Concerns::NestedDefinition - name type - else - raise "Unknown typespec: #{type.class.name}" - end - end - - def name(named) - parent = name named.parent_defn if named.is_a?(AST::Concerns::NestedDefinition) - result = named.name.camelize - - "#{parent}#{result}" - end - - def name_string(name) - name.camelize - end - end - end -end diff --git a/lib/xdrgen/generators/elixir.rb b/lib/xdrgen/generators/elixir.rb deleted file mode 100644 index b19d7cdfe..000000000 --- a/lib/xdrgen/generators/elixir.rb +++ /dev/null @@ -1,257 +0,0 @@ -module Xdrgen - module Generators - class Elixir < Xdrgen::Generators::Base - MAX_INT = (2**31) - 1 - def generate - path = "#{@namespace}_generated.ex" - out = @output.open(path) - - render_define_block(out) do - out.indent() do - render_definitions(out, @top) - end - end - end - - private - def render_definitions(out, node) - node.definitions.each{|n| render_definition out, n } - node.namespaces.each{|n| render_definitions out, n } - end - - def render_nested_definitions(out, defn) - return unless defn.respond_to? :nested_definitions - defn.nested_definitions.each{|ndefn| render_definition out, ndefn} - end - - def render_definition(out, defn) - render_nested_definitions(out, defn) - render_source_comment(out, defn) - - case defn - when AST::Definitions::Struct ; - render_struct out, defn - when AST::Definitions::Enum ; - render_enum out, defn - when AST::Definitions::Union ; - render_union out, defn - when AST::Definitions::Typedef ; - render_typedef out, defn - when AST::Definitions::Const ; - render_const out, defn - end - - out.break - end - - def render_source_comment(out, defn) - return if defn.is_a?(AST::Definitions::Namespace) - - out.puts <<-EOS.strip_heredoc - comment ~S""" - === xdr source ============================================================ - - EOS - - out.puts " " + defn.text_value.split("\n").join("\n ") - - out.puts <<-EOS.strip_heredoc - - =========================================================================== - """ - EOS - end - - def render_moduledoc(out) - out.puts <<-EOS.strip_heredoc - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - EOS - out.break - end - - def render_define_block(out) - out.puts "defmodule #{@namespace} do" - out.indent do - render_moduledoc(out) - out.puts "use XDR.Base\n\n" - end - yield - ensure - out.puts "end" - out.break - end - - - def render_typedef(out, typedef) - out.puts "define_type(\"#{name typedef}\", #{build_type_args typedef.declaration.type})" - end - - def render_const(out, const) - out.puts "define_type(\"#{const_name const}\", Const, #{const.value});" - end - - def render_struct(out, struct) - out.puts "define_type(\"#{name struct}\", Struct," - out.indent do - struct.members.each_with_index do |m, i| - out.puts "#{member_name m}: #{type_reference m.type}#{comma_unless_last(i, struct.members)}" - end - end - out.puts ")" - end - - def render_enum(out, enum) - out.puts "define_type(\"#{name enum}\", Enum," - out.indent do - enum.members.each_with_index do |m, i| - out.puts "#{member_name m}: #{m.value}#{comma_unless_last(i, enum.members)}" - end - end - out.puts ")" - end - - def render_union(out, union) - out.puts "define_type(\"#{name union}\", Union," - out.indent do - out.puts "switch_type: #{type_reference union.discriminant.type}," - out.puts "switch_name: :#{member_name union.discriminant}," - - out.puts "switches: [" - out.indent do - union.normal_arms.each do |arm| - arm_name = arm.void? ? "XDR.Type.Void" : ":#{member_name(arm)}" - - arm.cases.each do |acase| - switch = if acase.value.is_a?(AST::Identifier) - ":#{member_name(acase.value)}" - else - acase.value.text_value - end - - out.puts "{#{switch}, #{arm_name}}," - end - end - end - out.puts "]," - - out.puts "arms: [" - out.indent do - union.arms.each do |arm| - next if arm.void? - out.puts "#{member_name arm}: #{type_reference arm.type}," - end - end - out.puts union.default_arm.present? ? "]," : "]" - - if union.default_arm.present? - arm = union.default_arm - arm_name = arm.void? ? "XDR.Type.Void" : member_name(arm) - out.puts "default_arm: #{arm_name}," - end - end - out.puts ")" - end - - private - def name(named) - return nil unless named.respond_to?(:name) - - parent = name named.parent_defn if named.is_a?(AST::Concerns::NestedDefinition) - - # NOTE: classify will strip plurality, so we restore it if necessary - plural = named.name.underscore.downcase.pluralize == named.name.underscore.downcase - base = named.name.underscore.classify - result = plural ? base.pluralize : base - - "#{parent}#{result}" - end - - def const_name(named) - named.name.underscore.upcase - end - - def member_name(member) - name(member).underscore - end - - # this can be a string to reference a custom type - # or a build_type call like build_type(VariableOpaque, 100) - # args for build_type can be created with build_type_args - def type_reference(type) - build_args = build_type_args(type) - - build_args === "\"#{name type}\"" ? build_args : "build_type(#{build_args})" - end - - def comma_unless_last(index, collection) - if index + 1 >= collection.length - "" - else - "," - end - end - - # the args to supply build_type (or define_type(name, ...args)) - def build_type_args(type) - base_ref = case type - when AST::Typespecs::Bool - "Bool" - when AST::Typespecs::Double - "Double" - when AST::Typespecs::Float - "Float" - when AST::Typespecs::Hyper - "HyperInt" - when AST::Typespecs::Int - "Int" - when AST::Typespecs::Opaque - if type.fixed? - "Opaque, #{type.size}" - else - type.size ? "VariableOpaque, #{type.size}" : "VariableOpaque" - end - when AST::Typespecs::Quadruple - raise "no quadruple support in elixir" - when AST::Typespecs::String - "XDR.Type.String, #{type.size}" - when AST::Typespecs::UnsignedHyper - "UnsignedHyperInt" - when AST::Typespecs::UnsignedInt - "UnsignedInt" - when AST::Typespecs::Simple - "\"#{name type}\"" - when AST::Definitions::Base - "\"#{name type}\"" - when AST::Concerns::NestedDefinition - "\"#{name type}\"" - else - raise "Unknown reference type: #{type.class.name}, #{type.class.ancestors}" - end - - base_type = base_ref === "\"#{name type}\"" ? base_ref : "buid_type(base_ref)" - - case type.sub_type - when :simple - base_ref - when :optional - "Optional, #{base_type}" - when :array - is_named, size = type.array_size - size = is_named ? "\"#{size}\"" : size - "Array, length: #{size}, type: #{base_type}" - when :var_array - is_named, size = type.array_size - size = is_named ? "\"#{size}\"" : (size || MAX_INT) - "VariableArray, max_length: #{size}, type: #{base_type}" - else - raise "Unknown sub_type: #{type.sub_type}" - end - end - end - end -end diff --git a/lib/xdrgen/generators/ruby.rb b/lib/xdrgen/generators/ruby.rb deleted file mode 100644 index f384449d6..000000000 --- a/lib/xdrgen/generators/ruby.rb +++ /dev/null @@ -1,283 +0,0 @@ -module Xdrgen - module Generators - - class Ruby < Xdrgen::Generators::Base - - def generate - render_index - render_definitions(@top) - end - - private - def render_index - root_file = "#{@namespace}.rb" - out = @output.open(root_file) - render_top_matter out - - render_definitions_index(out, @top) - end - - def render_definitions_index(out, node) - - node.definitions.each do |member| - case member - when AST::Definitions::Namespace ; - render_namespace_index(out, member) - when AST::Definitions::Typedef ; - render_typedef(out, member) - when AST::Definitions::Const ; - render_const(out, member) - when AST::Definitions::Struct, - AST::Definitions::Union, - AST::Definitions::Enum ; - render_autoload(out, member) - end - end - end - - def render_namespace_index(out, ns) - out.puts "module #{name_string ns.name}" - out.indent do - out.puts "include XDR::Namespace" - out.break - render_definitions_index(out, ns) - out.unbreak - end - out.puts "end" - end - - def render_autoload(out, named) - out.puts "autoload :#{name_string named.name}" - end - - def render_typedef(out, typedef) - out.puts "#{name_string typedef.name} = #{decl_string(typedef.declaration)}" - end - - def render_const(out, const) - out.puts "#{const.name.underscore.upcase} = #{const.value}" - end - - def render_definitions(node) - node.definitions.each(&method(:render_definition)) - node.namespaces.each(&method(:render_definitions)) - end - - def render_definition(defn) - case defn - when AST::Definitions::Struct ; - render_struct defn - when AST::Definitions::Enum ; - render_enum defn - when AST::Definitions::Union ; - render_union defn - end - end - - def render_struct(struct) - render_element "class", struct, "< XDR::Struct" do |out| - - render_nested_definitions out, struct - - out.balance_after /,[\s]*/ do - struct.members.each do |m| - out.puts "attribute :#{m.name.underscore}, #{decl_string(m.declaration)}" - end - end - end - end - - def render_enum(enum) - render_element "class", enum, "< XDR::Enum" do |out| - out.balance_after /,[\s]*/ do - enum.members.each do |em| - out.puts "member :#{em.name.underscore}, #{em.value}" - end - end - out.break - out.puts "seal" - end - end - - def render_union(union) - - render_element "class", union, "< XDR::Union" do |out| - render_nested_definitions out, union - - out.puts "switch_on #{type_string union.discriminant.type}, :#{union.discriminant_name}" - out.break - - out.balance_after /,[\s]*/ do - union.normal_arms.each do |arm| - arm.cases.each do |c| - value = c.value.text_value - value = ":#{value.underscore}" if c.value.is_a?(AST::Identifier) - render_union_switch(out, value, arm) - end - end - - if union.default_arm.present? - render_union_switch(out, ":default", union.default_arm) - end - end - out.break - - out.balance_after /,[\s]*/ do - union.arms.each do |a| - next if a.void? - out.puts "attribute :#{a.name.underscore}, #{decl_string(a.declaration)}" - end - end - end - end - - def render_union_switch(out, switch, arm) - if arm.void? - out.puts "switch #{switch}" - else - out.puts "switch #{switch}, :#{arm.name.underscore}" - end - end - - def render_nested_definitions(out, parent) - ndefn = parent.nested_definitions - return if ndefn.empty? - ndefn.each(&method(:render_definition)) - - out.puts "include XDR::Namespace" - out.break - ndefn.each{|ndefn| render_autoload out, ndefn} - out.break - end - - # TODO: find a better name - # This renders the skeletal structure of enums, structs, and unions - def render_element(type, element, post_name="") - path = element.fully_qualified_name.map(&:underscore).join("/") + ".rb" - name = name_string element.name - out = @output.open(path) - render_top_matter out - render_source_comment out, element - - render_containers out, element.namespaces do - out.puts "#{type} #{name} #{post_name}" - out.indent do - yield out - out.unbreak - end - out.puts "end" - end - end - - def render_source_comment(out, defn) - return if defn.is_a?(AST::Definitions::Namespace) - - out.puts <<-EOS.strip_heredoc - # === xdr source ============================================================ - # - EOS - - out.puts "# " + defn.text_value.split("\n").join("\n# ") - - out.puts <<-EOS.strip_heredoc - # - # =========================================================================== - EOS - end - - def render_top_matter(out) - out.puts <<-EOS.strip_heredoc - # This code was automatically generated using xdrgen - # DO NOT EDIT or your changes may be overwritten - - require 'xdr' - EOS - out.break - end - - - def render_containers(out, containers, &block) - cur = containers.first - - if cur.blank? - block.call - return - end - - type = case cur - when AST::Definitions::Union, AST::Definitions::Struct ; - "class" - else - "module" - end - - out.puts "#{type} #{name_string cur.name}" - out.indent do - render_containers(out, containers.drop(1), &block) - end - out.puts "end" - end - - private - - def decl_string(decl) - case decl - when AST::Declarations::Opaque ; - type = decl.fixed? ? "XDR::Opaque" : "XDR::VarOpaque" - "#{type}[#{decl.size}]" - when AST::Declarations::String ; - "XDR::String[#{decl.size}]" - when AST::Declarations::Array ; - type = decl.fixed? ? "XDR::Array" : "XDR::VarArray" - args = [decl.child_type.to_s, decl.size]. - compact. - map(&:to_s). - join(", ") - "#{type}[#{args}]" - when AST::Declarations::Optional ; - "XDR::Option[#{name_string decl.type.text_value}]" - when AST::Declarations::Simple ; - type_string(decl.type) - when AST::Declarations::Void ; - "XDR::Void" - when AST::Concerns::NestedDefinition ; - name_string type.name - else - raise "Unknown declaration type: #{decl.class.name}" - end - end - - def type_string(type) - case type - when AST::Typespecs::Int ; - "XDR::Int" - when AST::Typespecs::UnsignedInt ; - "XDR::UnsignedInt" - when AST::Typespecs::Hyper ; - "XDR::Hyper" - when AST::Typespecs::UnsignedHyper ; - "XDR::UnsignedHyper" - when AST::Typespecs::Float ; - "XDR::Float" - when AST::Typespecs::Double ; - "XDR::Double" - when AST::Typespecs::Quadruple ; - "XDR::Quadruple" - when AST::Typespecs::Bool ; - "XDR::Bool" - when AST::Typespecs::Simple ; - name_string type.text_value - when AST::Concerns::NestedDefinition ; - name_string type.name - else - raise "Unknown type: #{type.class.name}" - end - end - - def name_string(name) - name.camelize - end - - end - end -end diff --git a/spec/lib/xdrgen/generator_spec.rb b/spec/lib/xdrgen/generator_spec.rb index fa66e3ef2..288112802 100644 --- a/spec/lib/xdrgen/generator_spec.rb +++ b/spec/lib/xdrgen/generator_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Xdrgen::Generators do - languages = %w(ruby javascript go elixir) + languages = %w(javascript go) focus_language = "" #"go" focus_basename = "" #"optional.x" diff --git a/spec/output/generator_spec_elixir/block_comments.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/block_comments.x/MyXDR_generated.ex deleted file mode 100644 index 41d118c6b..000000000 --- a/spec/output/generator_spec_elixir/block_comments.x/MyXDR_generated.ex +++ /dev/null @@ -1,25 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - comment ~S""" - === xdr source ============================================================ - - enum AccountFlags - { // masks for each flag - AUTH_REQUIRED_FLAG = 0x1 - }; - - =========================================================================== - """ - define_type("AccountFlags", Enum, - auth_required_flag: 1 - ) - -end diff --git a/spec/output/generator_spec_elixir/const.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/const.x/MyXDR_generated.ex deleted file mode 100644 index 191b6b68a..000000000 --- a/spec/output/generator_spec_elixir/const.x/MyXDR_generated.ex +++ /dev/null @@ -1,38 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - comment ~S""" - === xdr source ============================================================ - - const FOO = 1; - - =========================================================================== - """ - define_type("FOO", Const, 1); - - comment ~S""" - === xdr source ============================================================ - - typedef int TestArray[FOO]; - - =========================================================================== - """ - define_type("TestArray", Array, length: "FOO", type: buid_type(base_ref)) - - comment ~S""" - === xdr source ============================================================ - - typedef int TestArray2; - - =========================================================================== - """ - define_type("TestArray2", VariableArray, max_length: "FOO", type: buid_type(base_ref)) - -end diff --git a/spec/output/generator_spec_elixir/enum.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/enum.x/MyXDR_generated.ex deleted file mode 100644 index 9390a0585..000000000 --- a/spec/output/generator_spec_elixir/enum.x/MyXDR_generated.ex +++ /dev/null @@ -1,108 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - comment ~S""" - === xdr source ============================================================ - - enum MessageType - { - ERROR_MSG, - HELLO, - DONT_HAVE, - - GET_PEERS, // gets a list of peers this guy knows about - PEERS, - - GET_TX_SET, // gets a particular txset by hash - TX_SET, - - GET_VALIDATIONS, // gets validations for a given ledger hash - VALIDATIONS, - - TRANSACTION, //pass on a tx you have heard about - JSON_TRANSACTION, - - // FBA - GET_FBA_QUORUMSET, - FBA_QUORUMSET, - FBA_MESSAGE - }; - - =========================================================================== - """ - define_type("MessageType", Enum, - error_msg: 0, - hello: 1, - dont_have: 2, - get_peers: 3, - peers: 4, - get_tx_set: 5, - tx_set: 6, - get_validations: 7, - validations: 8, - transaction: 9, - json_transaction: 10, - get_fba_quorumset: 11, - fba_quorumset: 12, - fba_message: 13 - ) - - comment ~S""" - === xdr source ============================================================ - - enum Color { - RED=0, - GREEN=1, - BLUE=2 - }; - - =========================================================================== - """ - define_type("Color", Enum, - red: 0, - green: 1, - blue: 2 - ) - - comment ~S""" - === xdr source ============================================================ - - enum Color2 { - RED2=RED, - GREEN2=1, - BLUE2=2 - }; - - =========================================================================== - """ - define_type("Color2", Enum, - red2: 0, - green2: 1, - blue2: 2 - ) - - comment ~S""" - === xdr source ============================================================ - - enum Color3 { - RED_1=1, - RED_2_TWO=2, - RED_3=3 - }; - - =========================================================================== - """ - define_type("Color3", Enum, - red1: 1, - red2_two: 2, - red3: 3 - ) - -end diff --git a/spec/output/generator_spec_elixir/nesting.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/nesting.x/MyXDR_generated.ex deleted file mode 100644 index 665fd7dfa..000000000 --- a/spec/output/generator_spec_elixir/nesting.x/MyXDR_generated.ex +++ /dev/null @@ -1,101 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - comment ~S""" - === xdr source ============================================================ - - enum UnionKey { - ONE = 1, - TWO = 2, - OFFER = 3 - }; - - =========================================================================== - """ - define_type("UnionKey", Enum, - one: 1, - two: 2, - offer: 3 - ) - - comment ~S""" - === xdr source ============================================================ - - typedef int Foo; - - =========================================================================== - """ - define_type("Foo", Int) - - comment ~S""" - === xdr source ============================================================ - - struct { - int someInt; - } - - =========================================================================== - """ - define_type("MyUnionOne", Struct, - some_int: build_type(Int) - ) - - comment ~S""" - === xdr source ============================================================ - - struct { - int someInt; - Foo foo; - } - - =========================================================================== - """ - define_type("MyUnionTwo", Struct, - some_int: build_type(Int), - foo: "Foo" - ) - - comment ~S""" - === xdr source ============================================================ - - union MyUnion switch (UnionKey type) - { - case ONE: - struct { - int someInt; - } one; - - case TWO: - struct { - int someInt; - Foo foo; - } two; - - case OFFER: - void; - }; - - =========================================================================== - """ - define_type("MyUnion", Union, - switch_type: "UnionKey", - switch_name: :type, - switches: [ - {:one, :one}, - {:two, :two}, - {:offer, XDR.Type.Void}, - ], - arms: [ - one: "MyUnionOne", - two: "MyUnionTwo", - ] - ) - -end diff --git a/spec/output/generator_spec_elixir/optional.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/optional.x/MyXDR_generated.ex deleted file mode 100644 index 9b1531ec9..000000000 --- a/spec/output/generator_spec_elixir/optional.x/MyXDR_generated.ex +++ /dev/null @@ -1,38 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - comment ~S""" - === xdr source ============================================================ - - typedef int Arr[2]; - - =========================================================================== - """ - define_type("Arr", Array, length: 2, type: buid_type(base_ref)) - - comment ~S""" - === xdr source ============================================================ - - struct HasOptions - { - int* firstOption; - int *secondOption; - Arr *thirdOption; - }; - - =========================================================================== - """ - define_type("HasOptions", Struct, - first_option: build_type(Optional, buid_type(base_ref)), - second_option: build_type(Optional, buid_type(base_ref)), - third_option: build_type(Optional, "Arr") - ) - -end diff --git a/spec/output/generator_spec_elixir/struct.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/struct.x/MyXDR_generated.ex deleted file mode 100644 index 6c859516e..000000000 --- a/spec/output/generator_spec_elixir/struct.x/MyXDR_generated.ex +++ /dev/null @@ -1,42 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - comment ~S""" - === xdr source ============================================================ - - typedef hyper int64; - - =========================================================================== - """ - define_type("Int64", HyperInt) - - comment ~S""" - === xdr source ============================================================ - - struct MyStruct - { - int someInt; - int64 aBigInt; - opaque someOpaque[10]; - string someString<>; - string maxString<100>; - }; - - =========================================================================== - """ - define_type("MyStruct", Struct, - some_int: build_type(Int), - a_big_int: "Int64", - some_opaque: build_type(Opaque, 10), - some_string: build_type(XDR.Type.String, ), - max_string: build_type(XDR.Type.String, 100) - ) - -end diff --git a/spec/output/generator_spec_elixir/test.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/test.x/MyXDR_generated.ex deleted file mode 100644 index 4f6d2eb55..000000000 --- a/spec/output/generator_spec_elixir/test.x/MyXDR_generated.ex +++ /dev/null @@ -1,320 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - - comment ~S""" - === xdr source ============================================================ - - typedef opaque uint512[64]; - - =========================================================================== - """ - define_type("Uint512", Opaque, 64) - - comment ~S""" - === xdr source ============================================================ - - typedef opaque uint513<64>; - - =========================================================================== - """ - define_type("Uint513", VariableOpaque, 64) - - comment ~S""" - === xdr source ============================================================ - - typedef opaque uint514<>; - - =========================================================================== - """ - define_type("Uint514", VariableOpaque) - - comment ~S""" - === xdr source ============================================================ - - typedef string str<64>; - - =========================================================================== - """ - define_type("Str", XDR.Type.String, 64) - - comment ~S""" - === xdr source ============================================================ - - typedef string str2<>; - - =========================================================================== - """ - define_type("Str2", XDR.Type.String, ) - - comment ~S""" - === xdr source ============================================================ - - typedef opaque Hash[32]; - - =========================================================================== - """ - define_type("Hash", Opaque, 32) - - comment ~S""" - === xdr source ============================================================ - - typedef Hash Hashes1[12]; - - =========================================================================== - """ - define_type("Hashes1", Array, length: 12, type: "Hash") - - comment ~S""" - === xdr source ============================================================ - - typedef Hash Hashes2<12>; - - =========================================================================== - """ - define_type("Hashes2", VariableArray, max_length: 12, type: "Hash") - - comment ~S""" - === xdr source ============================================================ - - typedef Hash Hashes3<>; - - =========================================================================== - """ - define_type("Hashes3", VariableArray, max_length: 2147483647, type: "Hash") - - comment ~S""" - === xdr source ============================================================ - - typedef Hash *optHash1; - - =========================================================================== - """ - define_type("OptHash1", Optional, "Hash") - - comment ~S""" - === xdr source ============================================================ - - typedef Hash* optHash2; - - =========================================================================== - """ - define_type("OptHash2", Optional, "Hash") - - comment ~S""" - === xdr source ============================================================ - - typedef int int1; - - =========================================================================== - """ - define_type("Int1", Int) - - comment ~S""" - === xdr source ============================================================ - - typedef hyper int2; - - =========================================================================== - """ - define_type("Int2", HyperInt) - - comment ~S""" - === xdr source ============================================================ - - typedef unsigned int int3; - - =========================================================================== - """ - define_type("Int3", UnsignedInt) - - comment ~S""" - === xdr source ============================================================ - - typedef unsigned hyper int4; - - =========================================================================== - """ - define_type("Int4", UnsignedHyperInt) - - comment ~S""" - === xdr source ============================================================ - - struct MyStruct - { - uint512 field1; - optHash1 field2; - int1 field3; - unsigned int field4; - float field5; - double field6; - bool field7; - }; - - =========================================================================== - """ - define_type("MyStruct", Struct, - field1: "Uint512", - field2: "OptHash1", - field3: "Int1", - field4: build_type(UnsignedInt), - field5: build_type(Float), - field6: build_type(Double), - field7: build_type(Bool) - ) - - comment ~S""" - === xdr source ============================================================ - - struct LotsOfMyStructs - { - MyStruct members<>; - }; - - =========================================================================== - """ - define_type("LotsOfMyStructs", Struct, - members: build_type(VariableArray, max_length: 2147483647, type: "MyStruct") - ) - - comment ~S""" - === xdr source ============================================================ - - struct HasStuff - { - LotsOfMyStructs data; - }; - - =========================================================================== - """ - define_type("HasStuff", Struct, - data: "LotsOfMyStructs" - ) - - comment ~S""" - === xdr source ============================================================ - - enum Color { - RED, - BLUE = 5, - GREEN - }; - - =========================================================================== - """ - define_type("Color", Enum, - red: 0, - blue: 5, - green: 6 - ) - - comment ~S""" - === xdr source ============================================================ - - const FOO = 1244; - - =========================================================================== - """ - define_type("FOO", Const, 1244); - - comment ~S""" - === xdr source ============================================================ - - const BAR = FOO; - - =========================================================================== - """ - define_type("BAR", Const, FOO); - - comment ~S""" - === xdr source ============================================================ - - enum { - BLAH_1, - BLAH_2 - } - - =========================================================================== - """ - define_type("NesterNestedEnum", Enum, - blah1: 0, - blah2: 1 - ) - - comment ~S""" - === xdr source ============================================================ - - struct { - int blah; - } - - =========================================================================== - """ - define_type("NesterNestedStruct", Struct, - blah: build_type(Int) - ) - - comment ~S""" - === xdr source ============================================================ - - union switch (Color color) { - case RED: - void; - default: - int blah2; - } - - =========================================================================== - """ - define_type("NesterNestedUnion", Union, - switch_type: "Color", - switch_name: :color, - switches: [ - {:red, XDR.Type.Void}, - ], - arms: [ - blah2: build_type(Int), - ], - default_arm: blah2, - ) - - comment ~S""" - === xdr source ============================================================ - - struct Nester - { - enum { - BLAH_1, - BLAH_2 - } nestedEnum; - - struct { - int blah; - } nestedStruct; - - union switch (Color color) { - case RED: - void; - default: - int blah2; - } nestedUnion; - - - }; - - =========================================================================== - """ - define_type("Nester", Struct, - nested_enum: "NesterNestedEnum", - nested_struct: "NesterNestedStruct", - nested_union: "NesterNestedUnion" - ) - -end diff --git a/spec/output/generator_spec_elixir/union.x/MyXDR_generated.ex b/spec/output/generator_spec_elixir/union.x/MyXDR_generated.ex deleted file mode 100644 index ddcb67713..000000000 --- a/spec/output/generator_spec_elixir/union.x/MyXDR_generated.ex +++ /dev/null @@ -1,108 +0,0 @@ -defmodule MyXDR do - @moduledoc """ - Automatically generated by xdrgen - DO NOT EDIT or your changes may be overwritten - - Target implementation: exdr at https://hex.pm/packages/exdr - """ - - use XDR.Base - - comment ~S""" - === xdr source ============================================================ - - typedef int Error; - - =========================================================================== - """ - define_type("Error", Int) - - comment ~S""" - === xdr source ============================================================ - - typedef int Multi; - - =========================================================================== - """ - define_type("Multi", Int) - - comment ~S""" - === xdr source ============================================================ - - enum UnionKey { - ERROR, - MULTI - }; - - =========================================================================== - """ - define_type("UnionKey", Enum, - error: 0, - multi: 1 - ) - - comment ~S""" - === xdr source ============================================================ - - union MyUnion switch (UnionKey type) - { - case ERROR: - Error error; - case MULTI: - Multi things<>; - - - }; - - =========================================================================== - """ - define_type("MyUnion", Union, - switch_type: "UnionKey", - switch_name: :type, - switches: [ - {:error, :error}, - {:multi, :things}, - ], - arms: [ - error: "Error", - things: build_type(VariableArray, max_length: 2147483647, type: "Multi"), - ] - ) - - comment ~S""" - === xdr source ============================================================ - - union IntUnion switch (int type) - { - case 0: - Error error; - case 1: - Multi things<>; - - }; - - =========================================================================== - """ - define_type("IntUnion", Union, - switch_type: build_type(Int), - switch_name: :type, - switches: [ - {0, :error}, - {1, :things}, - ], - arms: [ - error: "Error", - things: build_type(VariableArray, max_length: 2147483647, type: "Multi"), - ] - ) - - comment ~S""" - === xdr source ============================================================ - - typedef IntUnion IntUnion2; - - =========================================================================== - """ - define_type("IntUnion2", "IntUnion") - -end diff --git a/spec/output/generator_spec_ruby/block_comments.x/MyXDR.rb b/spec/output/generator_spec_ruby/block_comments.x/MyXDR.rb deleted file mode 100644 index a0e2f3ae7..000000000 --- a/spec/output/generator_spec_ruby/block_comments.x/MyXDR.rb +++ /dev/null @@ -1,6 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -autoload :AccountFlags diff --git a/spec/output/generator_spec_ruby/block_comments.x/account_flags.rb b/spec/output/generator_spec_ruby/block_comments.x/account_flags.rb deleted file mode 100644 index c68fa86fa..000000000 --- a/spec/output/generator_spec_ruby/block_comments.x/account_flags.rb +++ /dev/null @@ -1,18 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum AccountFlags -# { // masks for each flag -# AUTH_REQUIRED_FLAG = 0x1 -# }; -# -# =========================================================================== -class AccountFlags < XDR::Enum - member :auth_required_flag, 1 - - seal -end diff --git a/spec/output/generator_spec_ruby/const.x/MyXDR.rb b/spec/output/generator_spec_ruby/const.x/MyXDR.rb deleted file mode 100644 index 392f95268..000000000 --- a/spec/output/generator_spec_ruby/const.x/MyXDR.rb +++ /dev/null @@ -1,8 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -FOO = 1 -TestArray = XDR::Array[int, FOO] -TestArray2 = XDR::VarArray[int, FOO] diff --git a/spec/output/generator_spec_ruby/enum.x/MyXDR.rb b/spec/output/generator_spec_ruby/enum.x/MyXDR.rb deleted file mode 100644 index ab042ef17..000000000 --- a/spec/output/generator_spec_ruby/enum.x/MyXDR.rb +++ /dev/null @@ -1,9 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -autoload :MessageType -autoload :Color -autoload :Color2 -autoload :Color3 diff --git a/spec/output/generator_spec_ruby/enum.x/color.rb b/spec/output/generator_spec_ruby/enum.x/color.rb deleted file mode 100644 index 0c4d080b3..000000000 --- a/spec/output/generator_spec_ruby/enum.x/color.rb +++ /dev/null @@ -1,21 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum Color { -# RED=0, -# GREEN=1, -# BLUE=2 -# }; -# -# =========================================================================== -class Color < XDR::Enum - member :red, 0 - member :green, 1 - member :blue, 2 - - seal -end diff --git a/spec/output/generator_spec_ruby/enum.x/color2.rb b/spec/output/generator_spec_ruby/enum.x/color2.rb deleted file mode 100644 index cbd05bb3c..000000000 --- a/spec/output/generator_spec_ruby/enum.x/color2.rb +++ /dev/null @@ -1,21 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum Color2 { -# RED2=RED, -# GREEN2=1, -# BLUE2=2 -# }; -# -# =========================================================================== -class Color2 < XDR::Enum - member :red2, 0 - member :green2, 1 - member :blue2, 2 - - seal -end diff --git a/spec/output/generator_spec_ruby/enum.x/color3.rb b/spec/output/generator_spec_ruby/enum.x/color3.rb deleted file mode 100644 index 0568da32b..000000000 --- a/spec/output/generator_spec_ruby/enum.x/color3.rb +++ /dev/null @@ -1,21 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum Color3 { -# RED_1=1, -# RED_2_TWO=2, -# RED_3=3 -# }; -# -# =========================================================================== -class Color3 < XDR::Enum - member :red_1, 1 - member :red_2_two, 2 - member :red_3, 3 - - seal -end diff --git a/spec/output/generator_spec_ruby/enum.x/message_type.rb b/spec/output/generator_spec_ruby/enum.x/message_type.rb deleted file mode 100644 index 57f6a9b17..000000000 --- a/spec/output/generator_spec_ruby/enum.x/message_type.rb +++ /dev/null @@ -1,50 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum MessageType -# { -# ERROR_MSG, -# HELLO, -# DONT_HAVE, -# -# GET_PEERS, // gets a list of peers this guy knows about -# PEERS, -# -# GET_TX_SET, // gets a particular txset by hash -# TX_SET, -# -# GET_VALIDATIONS, // gets validations for a given ledger hash -# VALIDATIONS, -# -# TRANSACTION, //pass on a tx you have heard about -# JSON_TRANSACTION, -# -# // FBA -# GET_FBA_QUORUMSET, -# FBA_QUORUMSET, -# FBA_MESSAGE -# }; -# -# =========================================================================== -class MessageType < XDR::Enum - member :error_msg, 0 - member :hello, 1 - member :dont_have, 2 - member :get_peers, 3 - member :peers, 4 - member :get_tx_set, 5 - member :tx_set, 6 - member :get_validations, 7 - member :validations, 8 - member :transaction, 9 - member :json_transaction, 10 - member :get_fba_quorumset, 11 - member :fba_quorumset, 12 - member :fba_message, 13 - - seal -end diff --git a/spec/output/generator_spec_ruby/nesting.x/MyXDR.rb b/spec/output/generator_spec_ruby/nesting.x/MyXDR.rb deleted file mode 100644 index 1c6a56d6b..000000000 --- a/spec/output/generator_spec_ruby/nesting.x/MyXDR.rb +++ /dev/null @@ -1,8 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -autoload :UnionKey -Foo = XDR::Int -autoload :MyUnion diff --git a/spec/output/generator_spec_ruby/nesting.x/my_union.rb b/spec/output/generator_spec_ruby/nesting.x/my_union.rb deleted file mode 100644 index 0b3673cb9..000000000 --- a/spec/output/generator_spec_ruby/nesting.x/my_union.rb +++ /dev/null @@ -1,40 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# union MyUnion switch (UnionKey type) -# { -# case ONE: -# struct { -# int someInt; -# } one; -# -# case TWO: -# struct { -# int someInt; -# Foo foo; -# } two; -# -# case OFFER: -# void; -# }; -# -# =========================================================================== -class MyUnion < XDR::Union - include XDR::Namespace - - autoload :One - autoload :Two - - switch_on UnionKey, :type - - switch :one, :one - switch :two, :two - switch :offer - - attribute :one, One - attribute :two, Two -end diff --git a/spec/output/generator_spec_ruby/nesting.x/my_union/one.rb b/spec/output/generator_spec_ruby/nesting.x/my_union/one.rb deleted file mode 100644 index f1bee7476..000000000 --- a/spec/output/generator_spec_ruby/nesting.x/my_union/one.rb +++ /dev/null @@ -1,17 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct { -# int someInt; -# } -# -# =========================================================================== -class MyUnion - class One < XDR::Struct - attribute :some_int, XDR::Int - end -end diff --git a/spec/output/generator_spec_ruby/nesting.x/my_union/two.rb b/spec/output/generator_spec_ruby/nesting.x/my_union/two.rb deleted file mode 100644 index 2d0c1e4ff..000000000 --- a/spec/output/generator_spec_ruby/nesting.x/my_union/two.rb +++ /dev/null @@ -1,19 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct { -# int someInt; -# Foo foo; -# } -# -# =========================================================================== -class MyUnion - class Two < XDR::Struct - attribute :some_int, XDR::Int - attribute :foo, Foo - end -end diff --git a/spec/output/generator_spec_ruby/nesting.x/union_key.rb b/spec/output/generator_spec_ruby/nesting.x/union_key.rb deleted file mode 100644 index ffdf1d8d3..000000000 --- a/spec/output/generator_spec_ruby/nesting.x/union_key.rb +++ /dev/null @@ -1,21 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum UnionKey { -# ONE = 1, -# TWO = 2, -# OFFER = 3 -# }; -# -# =========================================================================== -class UnionKey < XDR::Enum - member :one, 1 - member :two, 2 - member :offer, 3 - - seal -end diff --git a/spec/output/generator_spec_ruby/optional.x/MyXDR.rb b/spec/output/generator_spec_ruby/optional.x/MyXDR.rb deleted file mode 100644 index 0c8804803..000000000 --- a/spec/output/generator_spec_ruby/optional.x/MyXDR.rb +++ /dev/null @@ -1,7 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -Arr = XDR::Array[int, 2] -autoload :HasOptions diff --git a/spec/output/generator_spec_ruby/optional.x/has_options.rb b/spec/output/generator_spec_ruby/optional.x/has_options.rb deleted file mode 100644 index d76e6ff23..000000000 --- a/spec/output/generator_spec_ruby/optional.x/has_options.rb +++ /dev/null @@ -1,20 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct HasOptions -# { -# int* firstOption; -# int *secondOption; -# Arr *thirdOption; -# }; -# -# =========================================================================== -class HasOptions < XDR::Struct - attribute :first_option, XDR::Option[Int] - attribute :second_option, XDR::Option[Int] - attribute :third_option, XDR::Option[Arr] -end diff --git a/spec/output/generator_spec_ruby/struct.x/MyXDR.rb b/spec/output/generator_spec_ruby/struct.x/MyXDR.rb deleted file mode 100644 index b1878db58..000000000 --- a/spec/output/generator_spec_ruby/struct.x/MyXDR.rb +++ /dev/null @@ -1,7 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -Int64 = XDR::Hyper -autoload :MyStruct diff --git a/spec/output/generator_spec_ruby/struct.x/my_struct.rb b/spec/output/generator_spec_ruby/struct.x/my_struct.rb deleted file mode 100644 index 447d412a5..000000000 --- a/spec/output/generator_spec_ruby/struct.x/my_struct.rb +++ /dev/null @@ -1,24 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct MyStruct -# { -# int someInt; -# int64 aBigInt; -# opaque someOpaque[10]; -# string someString<>; -# string maxString<100>; -# }; -# -# =========================================================================== -class MyStruct < XDR::Struct - attribute :some_int, XDR::Int - attribute :a_big_int, Int64 - attribute :some_opaque, XDR::Opaque[10] - attribute :some_string, XDR::String[] - attribute :max_string, XDR::String[100] -end diff --git a/spec/output/generator_spec_ruby/test.x/MyXDR.rb b/spec/output/generator_spec_ruby/test.x/MyXDR.rb deleted file mode 100644 index 27407fd96..000000000 --- a/spec/output/generator_spec_ruby/test.x/MyXDR.rb +++ /dev/null @@ -1,31 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -module MyNamespace - include XDR::Namespace - - Uint512 = XDR::Opaque[64] - Uint513 = XDR::VarOpaque[64] - Uint514 = XDR::VarOpaque[] - Str = XDR::String[64] - Str2 = XDR::String[] - Hash = XDR::Opaque[32] - Hashes1 = XDR::Array[Hash, 12] - Hashes2 = XDR::VarArray[Hash, 12] - Hashes3 = XDR::VarArray[Hash] - OptHash1 = XDR::Option[Hash] - OptHash2 = XDR::Option[Hash] - Int1 = XDR::Int - Int2 = XDR::Hyper - Int3 = XDR::UnsignedInt - Int4 = XDR::UnsignedHyper - autoload :MyStruct - autoload :LotsOfMyStructs - autoload :HasStuff - autoload :Color - FOO = 1244 - BAR = FOO - autoload :Nester -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/color.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/color.rb deleted file mode 100644 index 5c8ca6ebe..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/color.rb +++ /dev/null @@ -1,23 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum Color { -# RED, -# BLUE = 5, -# GREEN -# }; -# -# =========================================================================== -module MyNamespace - class Color < XDR::Enum - member :red, 0 - member :blue, 5 - member :green, 6 - - seal - end -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/has_stuff.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/has_stuff.rb deleted file mode 100644 index 617508e2a..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/has_stuff.rb +++ /dev/null @@ -1,18 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct HasStuff -# { -# LotsOfMyStructs data; -# }; -# -# =========================================================================== -module MyNamespace - class HasStuff < XDR::Struct - attribute :data, LotsOfMyStructs - end -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/lots_of_my_structs.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/lots_of_my_structs.rb deleted file mode 100644 index 70818115f..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/lots_of_my_structs.rb +++ /dev/null @@ -1,18 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct LotsOfMyStructs -# { -# MyStruct members<>; -# }; -# -# =========================================================================== -module MyNamespace - class LotsOfMyStructs < XDR::Struct - attribute :members, XDR::VarArray[MyStruct] - end -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/my_struct.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/my_struct.rb deleted file mode 100644 index ddc57dc64..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/my_struct.rb +++ /dev/null @@ -1,30 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct MyStruct -# { -# uint512 field1; -# optHash1 field2; -# int1 field3; -# unsigned int field4; -# float field5; -# double field6; -# bool field7; -# }; -# -# =========================================================================== -module MyNamespace - class MyStruct < XDR::Struct - attribute :field1, Uint512 - attribute :field2, OptHash1 - attribute :field3, Int1 - attribute :field4, XDR::UnsignedInt - attribute :field5, XDR::Float - attribute :field6, XDR::Double - attribute :field7, XDR::Bool - end -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/nester.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/nester.rb deleted file mode 100644 index 915a3a77d..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/nester.rb +++ /dev/null @@ -1,42 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct Nester -# { -# enum { -# BLAH_1, -# BLAH_2 -# } nestedEnum; -# -# struct { -# int blah; -# } nestedStruct; -# -# union switch (Color color) { -# case RED: -# void; -# default: -# int blah2; -# } nestedUnion; -# -# -# }; -# -# =========================================================================== -module MyNamespace - class Nester < XDR::Struct - include XDR::Namespace - - autoload :NestedEnum - autoload :NestedStruct - autoload :NestedUnion - - attribute :nested_enum, NestedEnum - attribute :nested_struct, NestedStruct - attribute :nested_union, NestedUnion - end -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_enum.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_enum.rb deleted file mode 100644 index 7a7bd388a..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_enum.rb +++ /dev/null @@ -1,23 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum { -# BLAH_1, -# BLAH_2 -# } -# -# =========================================================================== -module MyNamespace - class Nester - class NestedEnum < XDR::Enum - member :blah_1, 0 - member :blah_2, 1 - - seal - end - end -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_struct.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_struct.rb deleted file mode 100644 index 73dd95257..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_struct.rb +++ /dev/null @@ -1,19 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# struct { -# int blah; -# } -# -# =========================================================================== -module MyNamespace - class Nester - class NestedStruct < XDR::Struct - attribute :blah, XDR::Int - end - end -end diff --git a/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_union.rb b/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_union.rb deleted file mode 100644 index 308810b44..000000000 --- a/spec/output/generator_spec_ruby/test.x/my_namespace/nester/nested_union.rb +++ /dev/null @@ -1,27 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# union switch (Color color) { -# case RED: -# void; -# default: -# int blah2; -# } -# -# =========================================================================== -module MyNamespace - class Nester - class NestedUnion < XDR::Union - switch_on Color, :color - - switch :red - switch :default, :blah2 - - attribute :blah2, XDR::Int - end - end -end diff --git a/spec/output/generator_spec_ruby/union.x/MyXDR.rb b/spec/output/generator_spec_ruby/union.x/MyXDR.rb deleted file mode 100644 index 80104241c..000000000 --- a/spec/output/generator_spec_ruby/union.x/MyXDR.rb +++ /dev/null @@ -1,11 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -Error = XDR::Int -Multi = XDR::Int -autoload :UnionKey -autoload :MyUnion -autoload :IntUnion -IntUnion2 = IntUnion diff --git a/spec/output/generator_spec_ruby/union.x/int_union.rb b/spec/output/generator_spec_ruby/union.x/int_union.rb deleted file mode 100644 index f25418de6..000000000 --- a/spec/output/generator_spec_ruby/union.x/int_union.rb +++ /dev/null @@ -1,26 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# union IntUnion switch (int type) -# { -# case 0: -# Error error; -# case 1: -# Multi things<>; -# -# }; -# -# =========================================================================== -class IntUnion < XDR::Union - switch_on XDR::Int, :type - - switch 0, :error - switch 1, :things - - attribute :error, Error - attribute :things, XDR::VarArray[Multi] -end diff --git a/spec/output/generator_spec_ruby/union.x/my_union.rb b/spec/output/generator_spec_ruby/union.x/my_union.rb deleted file mode 100644 index 830d25b22..000000000 --- a/spec/output/generator_spec_ruby/union.x/my_union.rb +++ /dev/null @@ -1,27 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# union MyUnion switch (UnionKey type) -# { -# case ERROR: -# Error error; -# case MULTI: -# Multi things<>; -# -# -# }; -# -# =========================================================================== -class MyUnion < XDR::Union - switch_on UnionKey, :type - - switch :error, :error - switch :multi, :things - - attribute :error, Error - attribute :things, XDR::VarArray[Multi] -end diff --git a/spec/output/generator_spec_ruby/union.x/union_key.rb b/spec/output/generator_spec_ruby/union.x/union_key.rb deleted file mode 100644 index 7382b66e8..000000000 --- a/spec/output/generator_spec_ruby/union.x/union_key.rb +++ /dev/null @@ -1,19 +0,0 @@ -# This code was automatically generated using xdrgen -# DO NOT EDIT or your changes may be overwritten - -require 'xdr' - -# === xdr source ============================================================ -# -# enum UnionKey { -# ERROR, -# MULTI -# }; -# -# =========================================================================== -class UnionKey < XDR::Enum - member :error, 0 - member :multi, 1 - - seal -end