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