diff --git a/README.md b/README.md index 0a64346dc..52f276ebd 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ protocol](https://github.com/stellar/stellar-xdr). > 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. +> The Go generator still lives here at this time. > [!WARNING] > .x files to the parser and code generators in this repository are considered a @@ -87,5 +87,4 @@ The command line: The CLI still has the following built-in generators: -- javascript -- golang +- go diff --git a/lib/xdrgen/cli.rb b/lib/xdrgen/cli.rb index 0167a24b7..3ae2d24a9 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=javascript' + banner 'Usage: xdrgen -o OUTPUT_DIR INPUT --language=go' on 'o', 'output=', 'The output directory' - on 'l', 'language=', 'The output language', default: 'javascript' + on 'l', 'language=', 'The output language', default: 'go' on 'n', 'namespace=', '"namespace" to generate code within (language-specific)' end diff --git a/lib/xdrgen/generators.rb b/lib/xdrgen/generators.rb index 5aef3e958..3a50e6842 100644 --- a/lib/xdrgen/generators.rb +++ b/lib/xdrgen/generators.rb @@ -3,7 +3,6 @@ module Xdrgen::Generators autoload :Base autoload :Go - autoload :Javascript def self.for_language(language) const_get language.to_s.classify diff --git a/lib/xdrgen/generators/javascript.rb b/lib/xdrgen/generators/javascript.rb deleted file mode 100644 index c5070abcb..000000000 --- a/lib/xdrgen/generators/javascript.rb +++ /dev/null @@ -1,258 +0,0 @@ -module Xdrgen - module Generators - - class Javascript < Xdrgen::Generators::Base - MAX_INT = (2**31) - 1 - def generate - path = "#{@namespace}_generated.js" - out = @output.open(path) - - render_top_matter out - render_define_block(out) do - render_definitions(out, @top) - 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 - // === 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 - // Automatically generated by xdrgen - // DO NOT EDIT or your changes may be overwritten - - /* jshint maxstatements:2147483647 */ - /* jshint esnext:true */ - - import * as XDR from '@stellar/js-xdr'; - - EOS - out.break - end - - def render_define_block(out) - out.puts "var types = XDR.config(xdr => {" - yield - ensure - out.puts "});" - out.puts "export default types;" - out.break - end - - - def render_typedef(out, typedef) - out.puts "xdr.typedef(\"#{name typedef}\", #{reference typedef.declaration.type});" - end - - def render_const(out, const) - out.puts "xdr.const(\"#{const_name const}\", #{const.value});" - end - - def render_struct(out, struct) - out.puts "xdr.struct(\"#{name struct}\", [" - out.indent do - struct.members.each do |m| - out.puts "[\"#{member_name m}\", #{reference m.type}]," - end - end - out.puts "]);" - end - - def render_enum(out, enum) - out.puts "xdr.enum(\"#{name enum}\", {" - - out.indent do - enum.members.each do |m| - out.puts "#{member_name m}: #{m.value}," - end - end - - out.puts "});" - end - - def render_union(out, union) - out.puts "xdr.union(\"#{name union}\", {" - out.indent do - out.puts "switchOn: #{reference union.discriminant.type}," - out.puts "switchName: \"#{member_name union.discriminant}\"," - out.puts "switches: [" - - out.indent do - union.normal_arms.each do |arm| - arm_name = arm.void? ? "xdr.void()" : "\"#{member_name(arm)}\"" - - arm.cases.each do |acase| - switch = if acase.value.is_a?(AST::Identifier) - if union.discriminant.type.is_a?(AST::Typespecs::Int) - member = union.resolved_case(acase) - "#{member.value}" - else - '"' + member_name(acase.value) + '"' - end - 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}: #{reference arm.type}," - end - end - - out.puts "}," - - if union.default_arm.present? - arm = union.default_arm - arm_name = arm.void? ? "xdr.void()" : member_name(arm) - out.puts "defaultArm: #{arm_name}," - end - - end - out.puts "});" - end - - private - def name(named) - parent = name named.parent_defn if named.is_a?(AST::Concerns::NestedDefinition) - - # NOTE: classify will strip plurality, so we restore it if necessary - # - # Downcase the value since pluralize adds a lower case `s`. - # - # Without downcasing, the following appears as singular, but it's plural: - # - # "BEGIN_SPONSORING_FUTURE_RESERVEs" == "BEGIN_SPONSORING_FUTURE_RESERVES" - # => false - # - 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) - fixedName = name(member).camelize(:lower) - # render set() as set_() because set is reserved by stellar/js-xdr - if fixedName == 'set' - return 'set_' - end - fixedName - end - - def reference(type) - baseReference = case type - when AST::Typespecs::Bool - "xdr.bool()" - when AST::Typespecs::Double - "xdr.double()" - when AST::Typespecs::Float - "xdr.float()" - when AST::Typespecs::Hyper - "xdr.hyper()" - when AST::Typespecs::Int - "xdr.int()" - when AST::Typespecs::Opaque - if type.fixed? - "xdr.opaque(#{type.size})" - else - "xdr.varOpaque(#{type.size})" - end - when AST::Typespecs::Quadruple - raise "no quadruple support for javascript" - when AST::Typespecs::String - "xdr.string(#{type.size})" - when AST::Typespecs::UnsignedHyper - "xdr.uhyper()" - when AST::Typespecs::UnsignedInt - "xdr.uint()" - when AST::Typespecs::Simple - "xdr.lookup(\"#{name type}\")" - when AST::Definitions::Base - "xdr.lookup(\"#{name type}\")" - when AST::Concerns::NestedDefinition - "xdr.lookup(\"#{name type}\")" - else - raise "Unknown reference type: #{type.class.name}, #{type.class.ancestors}" - end - - case type.sub_type - when :simple - baseReference - when :optional - "xdr.option(#{baseReference})" - when :array - is_named, size = type.array_size - size = is_named ? "xdr.lookup(\"#{size}\")" : size - "xdr.array(#{baseReference}, #{size})" - when :var_array - is_named, size = type.array_size - size = is_named ? "xdr.lookup(\"#{size}\")" : (size || MAX_INT) - "xdr.varArray(#{baseReference}, #{size})" - else - raise "Unknown sub_type: #{type.sub_type}" - end - - end - - end - end -end diff --git a/spec/lib/xdrgen/generator_spec.rb b/spec/lib/xdrgen/generator_spec.rb index 288112802..204523148 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(javascript go) + languages = %w(go) focus_language = "" #"go" focus_basename = "" #"optional.x" diff --git a/spec/output/generator_spec_javascript/block_comments.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/block_comments.x/MyXDR_generated.js deleted file mode 100644 index ef0ca4420..000000000 --- a/spec/output/generator_spec_javascript/block_comments.x/MyXDR_generated.js +++ /dev/null @@ -1,24 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(xdr => { -// === xdr source ============================================================ -// -// enum AccountFlags -// { // masks for each flag -// AUTH_REQUIRED_FLAG = 0x1 -// }; -// -// =========================================================================== -xdr.enum("AccountFlags", { - authRequiredFlag: 1, -}); - -}); -export default types; diff --git a/spec/output/generator_spec_javascript/const.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/const.x/MyXDR_generated.js deleted file mode 100644 index 0f7b6e1e3..000000000 --- a/spec/output/generator_spec_javascript/const.x/MyXDR_generated.js +++ /dev/null @@ -1,33 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(xdr => { -// === xdr source ============================================================ -// -// const FOO = 1; -// -// =========================================================================== -xdr.const("FOO", 1); - -// === xdr source ============================================================ -// -// typedef int TestArray[FOO]; -// -// =========================================================================== -xdr.typedef("TestArray", xdr.array(xdr.int(), xdr.lookup("FOO"))); - -// === xdr source ============================================================ -// -// typedef int TestArray2; -// -// =========================================================================== -xdr.typedef("TestArray2", xdr.varArray(xdr.int(), xdr.lookup("FOO"))); - -}); -export default types; diff --git a/spec/output/generator_spec_javascript/enum.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/enum.x/MyXDR_generated.js deleted file mode 100644 index 5e58aad8d..000000000 --- a/spec/output/generator_spec_javascript/enum.x/MyXDR_generated.js +++ /dev/null @@ -1,101 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(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 -// }; -// -// =========================================================================== -xdr.enum("MessageType", { - errorMsg: 0, - hello: 1, - dontHave: 2, - getPeers: 3, - peers: 4, - getTxSet: 5, - txSet: 6, - getValidations: 7, - validations: 8, - transaction: 9, - jsonTransaction: 10, - getFbaQuorumset: 11, - fbaQuorumset: 12, - fbaMessage: 13, -}); - -// === xdr source ============================================================ -// -// enum Color { -// RED=0, -// GREEN=1, -// BLUE=2 -// }; -// -// =========================================================================== -xdr.enum("Color", { - red: 0, - green: 1, - blue: 2, -}); - -// === xdr source ============================================================ -// -// enum Color2 { -// RED2=RED, -// GREEN2=1, -// BLUE2=2 -// }; -// -// =========================================================================== -xdr.enum("Color2", { - red2: 0, - green2: 1, - blue2: 2, -}); - -// === xdr source ============================================================ -// -// enum Color3 { -// RED_1=1, -// RED_2_TWO=2, -// RED_3=3 -// }; -// -// =========================================================================== -xdr.enum("Color3", { - red1: 1, - red2Two: 2, - red3: 3, -}); - -}); -export default types; diff --git a/spec/output/generator_spec_javascript/nesting.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/nesting.x/MyXDR_generated.js deleted file mode 100644 index 98facb500..000000000 --- a/spec/output/generator_spec_javascript/nesting.x/MyXDR_generated.js +++ /dev/null @@ -1,92 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(xdr => { -// === xdr source ============================================================ -// -// enum UnionKey { -// ONE = 1, -// TWO = 2, -// OFFER = 3 -// }; -// -// =========================================================================== -xdr.enum("UnionKey", { - one: 1, - two: 2, - offer: 3, -}); - -// === xdr source ============================================================ -// -// typedef int Foo; -// -// =========================================================================== -xdr.typedef("Foo", xdr.int()); - -// === xdr source ============================================================ -// -// struct { -// int someInt; -// } -// -// =========================================================================== -xdr.struct("MyUnionOne", [ - ["someInt", xdr.int()], -]); - -// === xdr source ============================================================ -// -// struct { -// int someInt; -// Foo foo; -// } -// -// =========================================================================== -xdr.struct("MyUnionTwo", [ - ["someInt", xdr.int()], - ["foo", xdr.lookup("Foo")], -]); - -// === xdr source ============================================================ -// -// union MyUnion switch (UnionKey type) -// { -// case ONE: -// struct { -// int someInt; -// } one; -// -// case TWO: -// struct { -// int someInt; -// Foo foo; -// } two; -// -// case OFFER: -// void; -// }; -// -// =========================================================================== -xdr.union("MyUnion", { - switchOn: xdr.lookup("UnionKey"), - switchName: "type", - switches: [ - ["one", "one"], - ["two", "two"], - ["offer", xdr.void()], - ], - arms: { - one: xdr.lookup("MyUnionOne"), - two: xdr.lookup("MyUnionTwo"), - }, -}); - -}); -export default types; diff --git a/spec/output/generator_spec_javascript/optional.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/optional.x/MyXDR_generated.js deleted file mode 100644 index e4c23c070..000000000 --- a/spec/output/generator_spec_javascript/optional.x/MyXDR_generated.js +++ /dev/null @@ -1,35 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(xdr => { -// === xdr source ============================================================ -// -// typedef int Arr[2]; -// -// =========================================================================== -xdr.typedef("Arr", xdr.array(xdr.int(), 2)); - -// === xdr source ============================================================ -// -// struct HasOptions -// { -// int* firstOption; -// int *secondOption; -// Arr *thirdOption; -// }; -// -// =========================================================================== -xdr.struct("HasOptions", [ - ["firstOption", xdr.option(xdr.int())], - ["secondOption", xdr.option(xdr.int())], - ["thirdOption", xdr.option(xdr.lookup("Arr"))], -]); - -}); -export default types; diff --git a/spec/output/generator_spec_javascript/struct.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/struct.x/MyXDR_generated.js deleted file mode 100644 index a3346cf71..000000000 --- a/spec/output/generator_spec_javascript/struct.x/MyXDR_generated.js +++ /dev/null @@ -1,39 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(xdr => { -// === xdr source ============================================================ -// -// typedef hyper int64; -// -// =========================================================================== -xdr.typedef("Int64", xdr.hyper()); - -// === xdr source ============================================================ -// -// struct MyStruct -// { -// int someInt; -// int64 aBigInt; -// opaque someOpaque[10]; -// string someString<>; -// string maxString<100>; -// }; -// -// =========================================================================== -xdr.struct("MyStruct", [ - ["someInt", xdr.int()], - ["aBigInt", xdr.lookup("Int64")], - ["someOpaque", xdr.opaque(10)], - ["someString", xdr.string()], - ["maxString", xdr.string(100)], -]); - -}); -export default types; diff --git a/spec/output/generator_spec_javascript/test.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/test.x/MyXDR_generated.js deleted file mode 100644 index 8b4570223..000000000 --- a/spec/output/generator_spec_javascript/test.x/MyXDR_generated.js +++ /dev/null @@ -1,271 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(xdr => { - -// === xdr source ============================================================ -// -// typedef opaque uint512[64]; -// -// =========================================================================== -xdr.typedef("Uint512", xdr.opaque(64)); - -// === xdr source ============================================================ -// -// typedef opaque uint513<64>; -// -// =========================================================================== -xdr.typedef("Uint513", xdr.varOpaque(64)); - -// === xdr source ============================================================ -// -// typedef opaque uint514<>; -// -// =========================================================================== -xdr.typedef("Uint514", xdr.varOpaque()); - -// === xdr source ============================================================ -// -// typedef string str<64>; -// -// =========================================================================== -xdr.typedef("Str", xdr.string(64)); - -// === xdr source ============================================================ -// -// typedef string str2<>; -// -// =========================================================================== -xdr.typedef("Str2", xdr.string()); - -// === xdr source ============================================================ -// -// typedef opaque Hash[32]; -// -// =========================================================================== -xdr.typedef("Hash", xdr.opaque(32)); - -// === xdr source ============================================================ -// -// typedef Hash Hashes1[12]; -// -// =========================================================================== -xdr.typedef("Hashes1", xdr.array(xdr.lookup("Hash"), 12)); - -// === xdr source ============================================================ -// -// typedef Hash Hashes2<12>; -// -// =========================================================================== -xdr.typedef("Hashes2", xdr.varArray(xdr.lookup("Hash"), 12)); - -// === xdr source ============================================================ -// -// typedef Hash Hashes3<>; -// -// =========================================================================== -xdr.typedef("Hashes3", xdr.varArray(xdr.lookup("Hash"), 2147483647)); - -// === xdr source ============================================================ -// -// typedef Hash *optHash1; -// -// =========================================================================== -xdr.typedef("OptHash1", xdr.option(xdr.lookup("Hash"))); - -// === xdr source ============================================================ -// -// typedef Hash* optHash2; -// -// =========================================================================== -xdr.typedef("OptHash2", xdr.option(xdr.lookup("Hash"))); - -// === xdr source ============================================================ -// -// typedef int int1; -// -// =========================================================================== -xdr.typedef("Int1", xdr.int()); - -// === xdr source ============================================================ -// -// typedef hyper int2; -// -// =========================================================================== -xdr.typedef("Int2", xdr.hyper()); - -// === xdr source ============================================================ -// -// typedef unsigned int int3; -// -// =========================================================================== -xdr.typedef("Int3", xdr.uint()); - -// === xdr source ============================================================ -// -// typedef unsigned hyper int4; -// -// =========================================================================== -xdr.typedef("Int4", xdr.uhyper()); - -// === xdr source ============================================================ -// -// struct MyStruct -// { -// uint512 field1; -// optHash1 field2; -// int1 field3; -// unsigned int field4; -// float field5; -// double field6; -// bool field7; -// }; -// -// =========================================================================== -xdr.struct("MyStruct", [ - ["field1", xdr.lookup("Uint512")], - ["field2", xdr.lookup("OptHash1")], - ["field3", xdr.lookup("Int1")], - ["field4", xdr.uint()], - ["field5", xdr.float()], - ["field6", xdr.double()], - ["field7", xdr.bool()], -]); - -// === xdr source ============================================================ -// -// struct LotsOfMyStructs -// { -// MyStruct members<>; -// }; -// -// =========================================================================== -xdr.struct("LotsOfMyStructs", [ - ["members", xdr.varArray(xdr.lookup("MyStruct"), 2147483647)], -]); - -// === xdr source ============================================================ -// -// struct HasStuff -// { -// LotsOfMyStructs data; -// }; -// -// =========================================================================== -xdr.struct("HasStuff", [ - ["data", xdr.lookup("LotsOfMyStructs")], -]); - -// === xdr source ============================================================ -// -// enum Color { -// RED, -// BLUE = 5, -// GREEN -// }; -// -// =========================================================================== -xdr.enum("Color", { - red: 0, - blue: 5, - green: 6, -}); - -// === xdr source ============================================================ -// -// const FOO = 1244; -// -// =========================================================================== -xdr.const("FOO", 1244); - -// === xdr source ============================================================ -// -// const BAR = FOO; -// -// =========================================================================== -xdr.const("BAR", FOO); - -// === xdr source ============================================================ -// -// enum { -// BLAH_1, -// BLAH_2 -// } -// -// =========================================================================== -xdr.enum("NesterNestedEnum", { - blah1: 0, - blah2: 1, -}); - -// === xdr source ============================================================ -// -// struct { -// int blah; -// } -// -// =========================================================================== -xdr.struct("NesterNestedStruct", [ - ["blah", xdr.int()], -]); - -// === xdr source ============================================================ -// -// union switch (Color color) { -// case RED: -// void; -// default: -// int blah2; -// } -// -// =========================================================================== -xdr.union("NesterNestedUnion", { - switchOn: xdr.lookup("Color"), - switchName: "color", - switches: [ - ["red", xdr.void()], - ], - arms: { - blah2: xdr.int(), - }, - defaultArm: blah2, -}); - -// === 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; -// -// -// }; -// -// =========================================================================== -xdr.struct("Nester", [ - ["nestedEnum", xdr.lookup("NesterNestedEnum")], - ["nestedStruct", xdr.lookup("NesterNestedStruct")], - ["nestedUnion", xdr.lookup("NesterNestedUnion")], -]); - -}); -export default types; diff --git a/spec/output/generator_spec_javascript/union.x/MyXDR_generated.js b/spec/output/generator_spec_javascript/union.x/MyXDR_generated.js deleted file mode 100644 index faade2057..000000000 --- a/spec/output/generator_spec_javascript/union.x/MyXDR_generated.js +++ /dev/null @@ -1,97 +0,0 @@ -// Automatically generated by xdrgen -// DO NOT EDIT or your changes may be overwritten - -/* jshint maxstatements:2147483647 */ -/* jshint esnext:true */ - -import * as XDR from '@stellar/js-xdr'; - - -var types = XDR.config(xdr => { -// === xdr source ============================================================ -// -// typedef int Error; -// -// =========================================================================== -xdr.typedef("Error", xdr.int()); - -// === xdr source ============================================================ -// -// typedef int Multi; -// -// =========================================================================== -xdr.typedef("Multi", xdr.int()); - -// === xdr source ============================================================ -// -// enum UnionKey { -// ERROR, -// MULTI -// }; -// -// =========================================================================== -xdr.enum("UnionKey", { - error: 0, - multi: 1, -}); - -// === xdr source ============================================================ -// -// union MyUnion switch (UnionKey type) -// { -// case ERROR: -// Error error; -// case MULTI: -// Multi things<>; -// -// -// }; -// -// =========================================================================== -xdr.union("MyUnion", { - switchOn: xdr.lookup("UnionKey"), - switchName: "type", - switches: [ - ["error", "error"], - ["multi", "things"], - ], - arms: { - error: xdr.lookup("Error"), - things: xdr.varArray(xdr.lookup("Multi"), 2147483647), - }, -}); - -// === xdr source ============================================================ -// -// union IntUnion switch (int type) -// { -// case 0: -// Error error; -// case 1: -// Multi things<>; -// -// }; -// -// =========================================================================== -xdr.union("IntUnion", { - switchOn: xdr.int(), - switchName: "type", - switches: [ - [0, "error"], - [1, "things"], - ], - arms: { - error: xdr.lookup("Error"), - things: xdr.varArray(xdr.lookup("Multi"), 2147483647), - }, -}); - -// === xdr source ============================================================ -// -// typedef IntUnion IntUnion2; -// -// =========================================================================== -xdr.typedef("IntUnion2", xdr.lookup("IntUnion")); - -}); -export default types;