Skip to content

Commit

Permalink
fix & improve net client gen
Browse files Browse the repository at this point in the history
  • Loading branch information
vobradovich committed Nov 25, 2024
1 parent f9b233d commit b93ed04
Show file tree
Hide file tree
Showing 14 changed files with 105 additions and 141 deletions.
19 changes: 3 additions & 16 deletions net/rs/client-gen/src/ctor_generators.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,9 @@ impl<'a> Visitor<'a> for CtorFactoryGenerator<'a> {
self.interface_tokens.push();

let route_bytes = &path_bytes(func.name()).0;
let args = &encoded_fn_args(func.params());
let args = &encoded_fn_args_comma_prefixed(func.params());
let args_with_type = &self.type_generator.fn_params_with_types(func.params());

let type_decls = func
.params()
.iter()
.map(|p| p.type_decl())
.collect::<Vec<_>>();
let tuple_arg_type = if type_decls.is_empty() {
primitive_type_to_dotnet(PrimitiveType::Null).to_string()
} else {
self.type_generator.generate_types_as_tuple(type_decls)
};
let void_type = primitive_type_to_dotnet(PrimitiveType::Null);

let activation = &csharp::import("global::Sails.Remoting.Abstractions", "IActivation");
let action = &csharp::import("global::Sails.Remoting", "RemotingAction");
Expand All @@ -88,10 +78,7 @@ impl<'a> Visitor<'a> for CtorFactoryGenerator<'a> {
$(inheritdoc())
public $activation $func_name_pascal($args_with_type)
{
return new $action<$(&tuple_arg_type)>(
this.remoting,
[$route_bytes],
new $(&tuple_arg_type)($args));
return new $action<$(void_type)>(this.remoting, [$route_bytes]$args);
}
$['\n']
};
Expand Down
11 changes: 8 additions & 3 deletions net/rs/client-gen/src/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,17 @@ pub(crate) fn path_bytes(path: &str) -> (String, usize) {
}
}

pub(crate) fn encoded_fn_args(params: &[FuncParam]) -> String {
pub(crate) fn encoded_fn_args_comma_prefixed(params: &[FuncParam]) -> String {
params
.iter()
.map(|p| escape_keywords(p.name().to_case(convert_case::Case::Camel)))
.map(|p| {
format!(
", {}",
escape_keywords(p.name().to_case(convert_case::Case::Camel))
)
})
.collect::<Vec<_>>()
.join(", ")
.join("")
}

pub fn summary_comment<T>(comment: T) -> SummaryComment<T>
Expand Down
2 changes: 2 additions & 0 deletions net/rs/client-gen/src/root_generator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ impl<'a> RootGenerator<'a> {
external_types: HashMap<&'a str, &'a str>,
) -> Self {
let mut tokens = Tokens::new();
tokens.append(ItemStr::Static("#nullable disable"));
tokens.line();
tokens.append(ItemStr::Static(
"#pragma warning disable RCS0056 // A line is too long",
));
Expand Down
10 changes: 2 additions & 8 deletions net/rs/client-gen/src/service_generators.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ use csharp::Tokens;
use genco::prelude::*;
use sails_idl_parser::{ast::visitor, ast::visitor::Visitor, ast::*};

const BASE_TUPLE_RUST: &str = "global::Substrate.NetApi.Model.Types.Base.BaseTupleRust";

/// Generates a client that implements service trait
pub(crate) struct ServiceClientGenerator<'a> {
service_name: String,
Expand Down Expand Up @@ -63,7 +61,7 @@ impl<'a> Visitor<'a> for ServiceClientGenerator<'a> {
let func_route_bytes = path_bytes(func.name()).0;
let route_bytes = [service_route_bytes, func_route_bytes].join(", ");

let args = encoded_fn_args(func.params());
let args = &encoded_fn_args_comma_prefixed(func.params());
let args_with_type = &self.type_generator.fn_params_with_types(func.params());
let func_return_type = &self.type_generator.generate_type_decl(func.output());

Expand All @@ -80,11 +78,7 @@ impl<'a> Visitor<'a> for ServiceClientGenerator<'a> {
$(inheritdoc())
public $return_type<$func_return_type> $func_name_pascal($args_with_type)
{
return new $action<$func_return_type>(
this.remoting,
[$(&route_bytes)],
new $(BASE_TUPLE_RUST)($(&args))
);
return new $action<$func_return_type>(this.remoting, [$(&route_bytes)]$args);
}
};
}
Expand Down
19 changes: 4 additions & 15 deletions net/rs/client-gen/src/type_generators.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ macro_rules! client_base {

macro_rules! client_primitive {
($t: expr) => {
concat!("global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.", $t)
concat!(
"global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.",
$t
)
};
}

Expand Down Expand Up @@ -142,7 +145,6 @@ impl<'a> StructDefGenerator<'a> {
}
let value_type = self.type_generator.generate_struct_def(struct_def);
quote_in! { self.props_tokens =>
[System.Diagnostics.CodeAnalysis.AllowNull]$['\r']
public $(&value_type) Value { get; set; }$['\r']
};
quote_in! { self.encode_tokens =>
Expand Down Expand Up @@ -183,7 +185,6 @@ impl<'a> Visitor<'a> for StructDefGenerator<'a> {
if let Some(field_name) = struct_field.name() {
let field_name_pascal = field_name.to_case(Case::Pascal);
quote_in! { self.props_tokens =>
[System.Diagnostics.CodeAnalysis.AllowNull]$['\r']
public $(&type_decl_code) $(&field_name_pascal) { get; set; }$['\r']
};
quote_in! { self.encode_tokens =>
Expand Down Expand Up @@ -275,18 +276,6 @@ impl<'a> TypeDeclGenerator<'a> {
std::mem::take(&mut self.code)
}

pub(crate) fn generate_types_as_tuple(&mut self, type_decls: Vec<&'a TypeDecl>) -> String {
if type_decls.is_empty() {
} else if type_decls.len() == 1 {
visitor::accept_type_decl(type_decls[0], self);
} else {
self.code.push_str(base!("BaseTuple<"));
self.join_type_decls(type_decls, ", ");
self.code.push('>');
}
std::mem::take(&mut self.code)
}

fn join_type_decls<I: IntoIterator<Item = &'a TypeDecl>>(
&mut self,
type_decls: I,
Expand Down
15 changes: 7 additions & 8 deletions net/rs/client-gen/tests/snapshots/generator__basic_works.snap
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ using global::Sails.Remoting.Abstractions.Core;
using global::System;
using global::System.Collections.Generic;

#nullable disable

#pragma warning disable RCS0056 // A line is too long

namespace Basic.Client;
Expand All @@ -23,17 +25,14 @@ ICall<global::Substrate.NetApi.Model.Types.Primitive.U8> DoThat(global::Substrat
public Basic(IRemoting remoting) { this.remoting = remoting; }

/// <inheritdoc/>
public ICall<global::Substrate.NetApi.Model.Types.Primitive.U16> DoThis(global::Substrate.NetApi.Model.Types.Primitive.U32 p1, MyParam p2) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Primitive.U16>( this.remoting, [20, 66, 97, 115, 105, 99, 24, 68, 111, 84, 104, 105, 115], new global::Substrate.NetApi.Model.Types.Base.BaseTupleRust(p1, p2) ); }
public ICall<global::Substrate.NetApi.Model.Types.Primitive.U16> DoThis(global::Substrate.NetApi.Model.Types.Primitive.U32 p1, MyParam p2) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Primitive.U16>(this.remoting, [20, 66, 97, 115, 105, 99, 24, 68, 111, 84, 104, 105, 115], p1, p2); }
/// <inheritdoc/>
public ICall<global::Substrate.NetApi.Model.Types.Primitive.U8> DoThat(global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.U8, global::Substrate.NetApi.Model.Types.Primitive.U32> p1) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Primitive.U8>( this.remoting, [20, 66, 97, 115, 105, 99, 24, 68, 111, 84, 104, 97, 116], new global::Substrate.NetApi.Model.Types.Base.BaseTupleRust(p1) ); } }
public ICall<global::Substrate.NetApi.Model.Types.Primitive.U8> DoThat(global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.U8, global::Substrate.NetApi.Model.Types.Primitive.U32> p1) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Primitive.U8>(this.remoting, [20, 66, 97, 115, 105, 99, 24, 68, 111, 84, 104, 97, 116], p1); } }

public sealed partial class MyParam : global::Substrate.NetApi.Model.Types.Base.BaseType {
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Primitive.U32 F1 { get; set; }
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Base.BaseVec<global::Substrate.NetApi.Model.Types.Primitive.Str> F2 { get; set; }
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Base.BaseOpt<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.U8, global::Substrate.NetApi.Model.Types.Primitive.U32>> F3 { get; set; }
public global::Substrate.NetApi.Model.Types.Primitive.U32 F1 { get; set; }
public global::Substrate.NetApi.Model.Types.Base.BaseVec<global::Substrate.NetApi.Model.Types.Primitive.Str> F2 { get; set; }
public global::Substrate.NetApi.Model.Types.Base.BaseOpt<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.U8, global::Substrate.NetApi.Model.Types.Primitive.U32>> F3 { get; set; }
/// <inheritdoc/>
public override string TypeName() => "MyParam";
/// <inheritdoc/>
Expand Down
13 changes: 6 additions & 7 deletions net/rs/client-gen/tests/snapshots/generator__events_works.snap
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ using global::Sails.Remoting.Abstractions.Core;
using global::System;
using global::System.Collections.Generic;

#nullable disable

#pragma warning disable RCS0056 // A line is too long

namespace ServiceWithEvents.Client;
Expand All @@ -22,7 +24,7 @@ public interface IServiceWithEvents
public ServiceWithEvents(IRemoting remoting) { this.remoting = remoting; }

/// <inheritdoc/>
public ICall<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU64> DoThis(global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU256 p1, MyParam p2) { return new RemotingAction<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU64>( this.remoting, [68, 83, 101, 114, 118, 105, 99, 101, 87, 105, 116, 104, 69, 118, 101, 110, 116, 115, 24, 68, 111, 84, 104, 105, 115], new global::Substrate.NetApi.Model.Types.Base.BaseTupleRust(p1, p2) ); } }
public ICall<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU64> DoThis(global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU256 p1, MyParam p2) { return new RemotingAction<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU64>(this.remoting, [68, 83, 101, 114, 118, 105, 99, 101, 87, 105, 116, 104, 69, 118, 101, 110, 116, 115, 24, 68, 111, 84, 104, 105, 115], p1, p2); } }

public enum ServiceWithEventsEvents { One,
Two,
Expand All @@ -45,12 +47,9 @@ this.AddTypeDecoder<global::Substrate.NetApi.Model.Types.Base.BaseVoid>(ServiceW
public async global::System.Collections.Generic.IAsyncEnumerable<EnumServiceWithEventsEvents> ListenAsync([global::System.Runtime.CompilerServices.EnumeratorCancellation] global::System.Threading.CancellationToken cancellationToken = default) { await foreach (var bytes in this.remoting.ListenAsync(cancellationToken)) { byte idx = 0; foreach (var route in EventRoutes) { if (route.Length > bytes.Length) { continue; } if (route.AsSpan().SequenceEqual(bytes.AsSpan()[..route.Length])) { var bytesLength = bytes.Length - route.Length + 1; var data = new byte[bytesLength]; data[0] = idx; Buffer.BlockCopy(bytes, route.Length, data, 1, bytes.Length - route.Length); var p = 0; EnumServiceWithEventsEvents ev = new(); ev.Decode(bytes, ref p); yield return ev; } idx++; } } } }

public sealed partial class MyParam : global::Substrate.NetApi.Model.Types.Base.BaseType {
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU256 F1 { get; set; }
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Base.BaseVec<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU8> F2 { get; set; }
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Base.BaseOpt<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU64, global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU256>> F3 { get; set; }
public global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU256 F1 { get; set; }
public global::Substrate.NetApi.Model.Types.Base.BaseVec<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU8> F2 { get; set; }
public global::Substrate.NetApi.Model.Types.Base.BaseOpt<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU64, global::Substrate.Gear.Client.NetApi.Model.Types.Primitive.NonZeroU256>> F3 { get; set; }
/// <inheritdoc/>
public override string TypeName() => "MyParam";
/// <inheritdoc/>
Expand Down
24 changes: 11 additions & 13 deletions net/rs/client-gen/tests/snapshots/generator__full.snap
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ using global::Sails.Remoting.Abstractions.Core;
using global::System;
using global::System.Collections.Generic;

#nullable disable

#pragma warning disable RCS0056 // A line is too long

namespace Service.Client;
Expand All @@ -29,7 +31,7 @@ IActivation New(global::Substrate.NetApi.Model.Types.Primitive.U32 a);
{ this.remoting = remoting; }

/// <inheritdoc/>
public IActivation New(global::Substrate.NetApi.Model.Types.Primitive.U32 a) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Primitive.U32>( this.remoting, [12, 78, 101, 119], new global::Substrate.NetApi.Model.Types.Primitive.U32(a)); }
public IActivation New(global::Substrate.NetApi.Model.Types.Primitive.U32 a) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Base.BaseVoid>(this.remoting, [12, 78, 101, 119], a); }

}

Expand All @@ -46,13 +48,13 @@ IQuery<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::
public Service(IRemoting remoting) { this.remoting = remoting; }

/// <inheritdoc/>
public ICall<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>> DoThis(global::Substrate.NetApi.Model.Types.Primitive.U32 p1, global::Substrate.NetApi.Model.Types.Primitive.Str p2, global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Base.BaseOpt<global::Substrate.NetApi.Model.Types.Primitive.Str>, global::Substrate.NetApi.Model.Types.Primitive.U8> p3, ThisThatSvcAppTupleStruct p4) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>>( this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 24, 68, 111, 84, 104, 105, 115], new global::Substrate.NetApi.Model.Types.Base.BaseTupleRust(p1, p2, p3, p4) ); }
public ICall<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>> DoThis(global::Substrate.NetApi.Model.Types.Primitive.U32 p1, global::Substrate.NetApi.Model.Types.Primitive.Str p2, global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Base.BaseOpt<global::Substrate.NetApi.Model.Types.Primitive.Str>, global::Substrate.NetApi.Model.Types.Primitive.U8> p3, ThisThatSvcAppTupleStruct p4) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>>(this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 24, 68, 111, 84, 104, 105, 115], p1, p2, p3, p4); }
/// <inheritdoc/>
public ICall<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>, global::Substrate.NetApi.Model.Types.Primitive.Str>> DoThat(ThisThatSvcAppDoThatParam param) { return new RemotingAction<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>, global::Substrate.NetApi.Model.Types.Primitive.Str>>( this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 24, 68, 111, 84, 104, 97, 116], new global::Substrate.NetApi.Model.Types.Base.BaseTupleRust(param) ); }
public ICall<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>, global::Substrate.NetApi.Model.Types.Primitive.Str>> DoThat(ThisThatSvcAppDoThatParam param) { return new RemotingAction<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Base.BaseTuple<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.U32>, global::Substrate.NetApi.Model.Types.Primitive.Str>>(this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 24, 68, 111, 84, 104, 97, 116], param); }
/// <inheritdoc/>
public IQuery<global::Substrate.NetApi.Model.Types.Primitive.U32> This(global::Substrate.NetApi.Model.Types.Base.BaseVec<global::Substrate.NetApi.Model.Types.Primitive.U16> v1) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Primitive.U32>( this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 16, 84, 104, 105, 115], new global::Substrate.NetApi.Model.Types.Base.BaseTupleRust(v1) ); }
public IQuery<global::Substrate.NetApi.Model.Types.Primitive.U32> This(global::Substrate.NetApi.Model.Types.Base.BaseVec<global::Substrate.NetApi.Model.Types.Primitive.U16> v1) { return new RemotingAction<global::Substrate.NetApi.Model.Types.Primitive.U32>(this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 16, 84, 104, 105, 115], v1); }
/// <inheritdoc/>
public IQuery<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.Str>> That(global::Substrate.NetApi.Model.Types.Base.BaseVoid v1) { return new RemotingAction<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.Str>>( this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 16, 84, 104, 97, 116], new global::Substrate.NetApi.Model.Types.Base.BaseTupleRust(v1) ); } }
public IQuery<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.Str>> That(global::Substrate.NetApi.Model.Types.Base.BaseVoid v1) { return new RemotingAction<global::Substrate.Gear.Client.NetApi.Model.Types.Base.BaseResult<global::Substrate.NetApi.Model.Types.Primitive.Str, global::Substrate.NetApi.Model.Types.Primitive.Str>>(this.remoting, [28, 83, 101, 114, 118, 105, 99, 101, 16, 84, 104, 97, 116], v1); } }

public enum ServiceEvents {
/// <summary>
Expand Down Expand Up @@ -80,8 +82,7 @@ this.AddTypeDecoder<global::Substrate.NetApi.Model.Types.Primitive.Str>(ServiceE
/// <summary>
/// ThisThatSvcAppTupleStruct docs
/// </summary>
public sealed partial class ThisThatSvcAppTupleStruct : global::Substrate.NetApi.Model.Types.Base.BaseType { [System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Primitive.Bool Value { get; set; }
public sealed partial class ThisThatSvcAppTupleStruct : global::Substrate.NetApi.Model.Types.Base.BaseType { public global::Substrate.NetApi.Model.Types.Primitive.Bool Value { get; set; }
/// <inheritdoc/>
public override string TypeName() => "ThisThatSvcAppTupleStruct";
/// <inheritdoc/>
Expand All @@ -99,18 +100,15 @@ public sealed partial class ThisThatSvcAppDoThatParam : global::Substrate.NetApi
/// <summary>
/// field `query`
/// </summary>
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Primitive.U32 Query { get; set; }
public global::Substrate.NetApi.Model.Types.Primitive.U32 Query { get; set; }
/// <summary>
/// field `result`
/// </summary>
[System.Diagnostics.CodeAnalysis.AllowNull]
public global::Substrate.NetApi.Model.Types.Primitive.Str Result { get; set; }
public global::Substrate.NetApi.Model.Types.Primitive.Str Result { get; set; }
/// <summary>
/// field `p3`
/// </summary>
[System.Diagnostics.CodeAnalysis.AllowNull]
public EnumThisThatSvcAppManyVariants P3 { get; set; }
public EnumThisThatSvcAppManyVariants P3 { get; set; }
/// <inheritdoc/>
public override string TypeName() => "ThisThatSvcAppDoThatParam";
/// <inheritdoc/>
Expand Down
Loading

0 comments on commit b93ed04

Please sign in to comment.