Заработала демка с новым бэком
This commit is contained in:
1 parent
4863010b47
commit
0e09b479af
5 files changed
+16
-16
No files matched your search
@@ -17,7 +17,7 @@ class Program
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
var builder = new FullMixBuilder();
|
||||
// new RemoteTypeBinder();
|
||||
new RemoteTypeBinder();
|
||||
// builder.Modules.Add(new JsonSerializationToolkit());
|
||||
builder.Modules.Add(new CborSerializationToolkit());
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ namespace mROA.Codegen
|
||||
// var reader = new StreamReader(test);
|
||||
// var allText = reader.ReadToEnd();
|
||||
var frontendContextRepo = new List<string>();
|
||||
List<IMethodSymbol> totalMethods = new List<IMethodSymbol>();
|
||||
|
||||
List<IMethodSymbol> innerMethods = new List<IMethodSymbol>();
|
||||
List<string> invokers = new List<string>();
|
||||
var declarations = classes.ToList().OrderBy(i => i.Identifier.Text).ToList();
|
||||
foreach (var classDeclarationSyntax in declarations)
|
||||
@@ -39,10 +39,11 @@ namespace mROA.Codegen
|
||||
|
||||
if (semanticModel.GetDeclaredSymbol(classDeclarationSyntax) is not INamedTypeSymbol classSymbol)
|
||||
continue;
|
||||
List<IMethodSymbol> innerMethods = new List<IMethodSymbol>();
|
||||
|
||||
var namespaceName = classSymbol.ContainingNamespace.ToDisplayString();
|
||||
var className = classDeclarationSyntax.Identifier.Text;
|
||||
innerMethods.AddRange(CollectMembers(classSymbol));
|
||||
innerMethods = CollectMembers(classSymbol);
|
||||
var associated = innerMethods.Select(i => i.AssociatedSymbol).Where(i => i != null)
|
||||
.Distinct(SymbolEqualityComparer.Default).Cast<ISymbol>().ToList();
|
||||
|
||||
@@ -50,6 +51,8 @@ namespace mROA.Codegen
|
||||
i.MethodKind != MethodKind.EventAdd && i.MethodKind != MethodKind.EventRemove)
|
||||
.ToList();
|
||||
|
||||
totalMethods.AddRange(innerMethods);
|
||||
|
||||
var originalName = className;
|
||||
|
||||
className = className.TrimStart('I') + "RemoteEndpoint";
|
||||
@@ -63,10 +66,10 @@ namespace mROA.Codegen
|
||||
switch (method.MethodKind)
|
||||
{
|
||||
case MethodKind.PropertyGet or MethodKind.PropertySet:
|
||||
GeneratePropertyMethod(method, innerMethods, propertiesAccessMethods, invokers);
|
||||
GeneratePropertyMethod(method, totalMethods, propertiesAccessMethods, invokers);
|
||||
continue;
|
||||
default:
|
||||
GenerateDeclaredMethod(method, declaredMethods, innerMethods, invokers);
|
||||
GenerateDeclaredMethod(method, declaredMethods, totalMethods, invokers);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -132,11 +135,10 @@ namespace {namespaceName}
|
||||
$"{{ typeof({classSymbol.ToDisplayString()}), typeof({namespaceName}.{className}) }}");
|
||||
}
|
||||
|
||||
if (innerMethods.Count != 0)
|
||||
if (totalMethods.Count != 0)
|
||||
{
|
||||
var methodsStringed = invokers;
|
||||
|
||||
|
||||
var coCodegenRepoCode = @$"// <auto-generated/>
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
@@ -325,6 +327,7 @@ namespace mROA.Codegen
|
||||
{level} IsVoid = {isVoid.ToString().ToLower()},
|
||||
{(isVoid ? String.Empty : (level + "\t" + "ReturnType = typeof(" + ExtractTaskType(method.ReturnType)) + "),")}
|
||||
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
|
||||
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
|
||||
{level} Invoking = (i, parameters, special, post) => {funcInvoking},
|
||||
{level}}}";
|
||||
else
|
||||
@@ -333,6 +336,7 @@ namespace mROA.Codegen
|
||||
{level} IsVoid = {isVoid.ToString().ToLower()},
|
||||
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
|
||||
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
|
||||
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
|
||||
{level} Invoking = (i, parameters, special) => {funcInvoking}
|
||||
{level}}}";
|
||||
|
||||
@@ -373,6 +377,7 @@ namespace mROA.Codegen
|
||||
{level} IsVoid = false,
|
||||
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
|
||||
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
|
||||
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
|
||||
{level} Invoking = (i, parameters, _) => (i as {method.ContainingType.ToDisplayString()})[{parameterInserts}],
|
||||
{level}}}";
|
||||
}
|
||||
@@ -382,6 +387,7 @@ namespace mROA.Codegen
|
||||
{level}{{
|
||||
{level} IsVoid = false,
|
||||
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
|
||||
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
|
||||
{level} Invoking = (i, _, _) => (i as {method.ContainingType.ToDisplayString()}).{(method.AssociatedSymbol as IPropertySymbol)!.Name},
|
||||
{level}}}";
|
||||
}
|
||||
@@ -420,6 +426,7 @@ namespace mROA.Codegen
|
||||
{level} IsVoid = false,
|
||||
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
|
||||
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
|
||||
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
|
||||
{level} Invoking = (i, parameters, _) => (i as {method.ContainingType.ToDisplayString()})[{parameterInserts}] = {valueInsert},
|
||||
{level}}}";
|
||||
}
|
||||
@@ -429,6 +436,7 @@ namespace mROA.Codegen
|
||||
{level}{{
|
||||
{level} IsVoid = false,
|
||||
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
|
||||
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
|
||||
{level} Invoking = (i, parameters, _) => (i as {method.ContainingType.ToDisplayString()}).{(method.AssociatedSymbol as IPropertySymbol)!.Name} = {Caster((method.AssociatedSymbol as IPropertySymbol)!.Type, "parameters[0]")},
|
||||
{level}}}";
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace mROA.Implementation.Backend
|
||||
|
||||
object?[]? castedParams = null;
|
||||
|
||||
if (invoker.ParameterTypes != Type.EmptyTypes)
|
||||
if (invoker.ParameterTypes.Length != 0)
|
||||
{
|
||||
castedParams = new object[invoker.ParameterTypes.Length];
|
||||
for (int i = 0; i < castedParams.Length; i++)
|
||||
|
||||
@@ -20,7 +20,6 @@ namespace mROA.Implementation
|
||||
public static readonly IMethodInvoker Dispose = new MethodInvoker
|
||||
{
|
||||
IsVoid = true,
|
||||
ReturnType = null,
|
||||
Invoking = (instance, _, _) =>
|
||||
{
|
||||
(instance as IDisposable)?.Dispose();
|
||||
|
||||
@@ -6,13 +6,6 @@ namespace mROA.Implementation
|
||||
#pragma warning disable CS8618, CS9264
|
||||
public struct UniversalObjectIdentifier : IEquatable<UniversalObjectIdentifier>
|
||||
{
|
||||
private static IMethodInvoker x = new MethodInvoker
|
||||
{
|
||||
IsVoid = false,
|
||||
ReturnType = typeof(void),
|
||||
ParameterTypes = Type.EmptyTypes
|
||||
|
||||
};
|
||||
public int ContextId;
|
||||
public int OwnerId;
|
||||
|
||||
|
||||
Reference in new issue
Block a user