Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

126 new feature add swapping methods to i twin object interface #132

Merged
10 changes: 6 additions & 4 deletions src/ix.compiler/src/IX.Cs.Compiler/Helpers/CsHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,15 @@ public static string GetAttributeNameValue(this IDeclaration declaration, string
return declaration.GetPropertyValue("AttributeName", memberName);
}

public static string CreateGenericSwapperMethodToPlainer(string methodName, string pocoTypeName)
public static string CreateGenericSwapperMethodToPlainer(string methodName, string pocoTypeName, bool isExtended)
{
return $"public T {methodName}<T>(){{\n return (dynamic)this.{methodName}Async().Result;\n}}";
var qualifier = isExtended ? "override" : "virtual";
return $"public {qualifier} T {methodName}<T>(){{\n return (dynamic)this.{methodName}Async().Result;\n}}";
}

public static string CreateGenericSwapperMethodFromPlainer(string methodName, string pocoTypeName)
public static string CreateGenericSwapperMethodFromPlainer(string methodName, string pocoTypeName, bool isExtended)
{
return $"public void {methodName}<T>(T plain){{\n this.{methodName}Async((dynamic)plain).Wait();\n}}";
var qualifier = isExtended ? "override" : "virtual";
return $"public {qualifier} void {methodName}<T>(T plain){{\n this.{methodName}Async((dynamic)plain).Wait();\n}}";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public static CsOnlinerPlainerOnlineToPlainBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerOnlineToPlainBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}", false));

builder.AddToSource($"public async Task<Pocos.{semantics.FullyQualifiedName}> {MethodName}Async(){{\n");
builder.AddToSource($"Pocos.{semantics.FullyQualifiedName} plain = new Pocos.{semantics.FullyQualifiedName}();");
Expand All @@ -135,7 +135,7 @@ public static CsOnlinerPlainerOnlineToPlainBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerOnlineToPlainBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName,$"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName,$"Pocos.{semantics.FullyQualifiedName}", isExtended));

builder.AddToSource($"public async Task<Pocos.{semantics.FullyQualifiedName}> {MethodName}Async(){{\n");
builder.AddToSource($"Pocos.{semantics.FullyQualifiedName} plain = new Pocos.{semantics.FullyQualifiedName}();");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ public static CsOnlinerPlainerPlainToOnlineBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerPlainToOnlineBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}", false));

builder.AddToSource($"public async Task<IEnumerable<ITwinPrimitive>> {MethodName}Async(Pocos.{semantics.FullyQualifiedName} plain){{\n");

Expand All @@ -139,7 +139,7 @@ public static CsOnlinerPlainerPlainToOnlineBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerPlainToOnlineBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}", isExtended));

builder.AddToSource($"public async Task<IEnumerable<ITwinPrimitive>> {MethodName}Async(Pocos.{semantics.FullyQualifiedName} plain){{\n");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public static CsOnlinerPlainerPlainToShadowBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerPlainToShadowBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}", false));

builder.AddToSource($"public async Task<IEnumerable<ITwinPrimitive>> {MethodName}Async(Pocos.{semantics.FullyQualifiedName} plain){{\n");

Expand All @@ -137,7 +137,7 @@ public static CsOnlinerPlainerPlainToShadowBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerPlainToShadowBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodFromPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}", isExtended));

builder.AddToSource($"public async Task<IEnumerable<ITwinPrimitive>> {MethodName}Async(Pocos.{semantics.FullyQualifiedName} plain){{\n");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public static CsOnlinerPlainerShadowToPlainBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerShadowToPlainBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}", false));

builder.AddToSource($"public async Task<Pocos.{semantics.FullyQualifiedName}> {MethodName}Async(){{\n");
builder.AddToSource($"Pocos.{semantics.FullyQualifiedName} plain = new Pocos.{semantics.FullyQualifiedName}();");
Expand All @@ -135,7 +135,7 @@ public static CsOnlinerPlainerShadowToPlainBuilder Create(IxNodeVisitor visitor,
{
var builder = new CsOnlinerPlainerShadowToPlainBuilder(sourceBuilder);

builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}"));
builder.AddToSource(CsHelpers.CreateGenericSwapperMethodToPlainer(MethodName, $"Pocos.{semantics.FullyQualifiedName}", isExtended));

builder.AddToSource($"public async Task<Pocos.{semantics.FullyQualifiedName}> {MethodName}Async(){{\n");
builder.AddToSource($"Pocos.{semantics.FullyQualifiedName} plain = new Pocos.{semantics.FullyQualifiedName}();");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public array_declaration_class(Ix.Connector.ITwinObject parent, string readableT
PostConstruct(parent, readableTail, symbolTail);
}

public T OnlineToPlain<T>()
public virtual T OnlineToPlain<T>()
{
return (dynamic)this.OnlineToPlainAsync().Result;
}
Expand All @@ -51,7 +51,7 @@ public T OnlineToPlain<T>()
return plain;
}

public void PlainToOnline<T>(T plain)
public virtual void PlainToOnline<T>(T plain)
{
this.PlainToOnlineAsync((dynamic)plain).Wait();
}
Expand All @@ -65,7 +65,7 @@ public async Task<IEnumerable<ITwinPrimitive>> PlainToOnlineAsync(Pocos.ArrayDec
return await this.WriteAsync();
}

public T ShadowToPlain<T>()
public virtual T ShadowToPlain<T>()
{
return (dynamic)this.ShadowToPlainAsync().Result;
}
Expand All @@ -85,7 +85,7 @@ public T ShadowToPlain<T>()
return plain;
}

public void PlainToShadow<T>(T plain)
public virtual void PlainToShadow<T>(T plain)
{
this.PlainToShadowAsync((dynamic)plain).Wait();
}
Expand Down Expand Up @@ -199,7 +199,7 @@ public some_complex_type(Ix.Connector.ITwinObject parent, string readableTail, s
PostConstruct(parent, readableTail, symbolTail);
}

public T OnlineToPlain<T>()
public virtual T OnlineToPlain<T>()
{
return (dynamic)this.OnlineToPlainAsync().Result;
}
Expand All @@ -216,7 +216,7 @@ public T OnlineToPlain<T>()
return plain;
}

public void PlainToOnline<T>(T plain)
public virtual void PlainToOnline<T>(T plain)
{
this.PlainToOnlineAsync((dynamic)plain).Wait();
}
Expand All @@ -226,7 +226,7 @@ public async Task<IEnumerable<ITwinPrimitive>> PlainToOnlineAsync(Pocos.ArrayDec
return await this.WriteAsync();
}

public T ShadowToPlain<T>()
public virtual T ShadowToPlain<T>()
{
return (dynamic)this.ShadowToPlainAsync().Result;
}
Expand All @@ -242,7 +242,7 @@ public T ShadowToPlain<T>()
return plain;
}

public void PlainToShadow<T>(T plain)
public virtual void PlainToShadow<T>(T plain)
{
this.PlainToShadowAsync((dynamic)plain).Wait();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public class_all_primitives(Ix.Connector.ITwinObject parent, string readableTail
PostConstruct(parent, readableTail, symbolTail);
}

public T OnlineToPlain<T>()
public virtual T OnlineToPlain<T>()
{
return (dynamic)this.OnlineToPlainAsync().Result;
}
Expand Down Expand Up @@ -147,7 +147,7 @@ public T OnlineToPlain<T>()
return plain;
}

public void PlainToOnline<T>(T plain)
public virtual void PlainToOnline<T>(T plain)
{
this.PlainToOnlineAsync((dynamic)plain).Wait();
}
Expand Down Expand Up @@ -179,7 +179,7 @@ public async Task<IEnumerable<ITwinPrimitive>> PlainToOnlineAsync(Pocos.class_al
return await this.WriteAsync();
}

public T ShadowToPlain<T>()
public virtual T ShadowToPlain<T>()
{
return (dynamic)this.ShadowToPlainAsync().Result;
}
Expand Down Expand Up @@ -239,7 +239,7 @@ public T ShadowToPlain<T>()
return plain;
}

public void PlainToShadow<T>(T plain)
public virtual void PlainToShadow<T>(T plain)
{
this.PlainToShadowAsync((dynamic)plain).Wait();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public State1Transition(Ix.Connector.ITwinObject parent, string readableTail, st
PostConstruct(parent, readableTail, symbolTail);
}

public T OnlineToPlain<T>()
public override T OnlineToPlain<T>()
{
return (dynamic)this.OnlineToPlainAsync().Result;
}
Expand All @@ -35,7 +35,7 @@ public T OnlineToPlain<T>()
return plain;
}

public void PlainToOnline<T>(T plain)
public override void PlainToOnline<T>(T plain)
{
this.PlainToOnlineAsync((dynamic)plain).Wait();
}
Expand All @@ -46,7 +46,7 @@ public async Task<IEnumerable<ITwinPrimitive>> PlainToOnlineAsync(Pocos.Simatic.
return await this.WriteAsync();
}

public T ShadowToPlain<T>()
public override T ShadowToPlain<T>()
{
return (dynamic)this.ShadowToPlainAsync().Result;
}
Expand All @@ -64,7 +64,7 @@ public T ShadowToPlain<T>()
return plain;
}

public void PlainToShadow<T>(T plain)
public override void PlainToShadow<T>(T plain)
{
this.PlainToShadowAsync((dynamic)plain).Wait();
}
Expand Down Expand Up @@ -112,7 +112,7 @@ public AbstractState(Ix.Connector.ITwinObject parent, string readableTail, strin
PostConstruct(parent, readableTail, symbolTail);
}

public T OnlineToPlain<T>()
public virtual T OnlineToPlain<T>()
{
return (dynamic)this.OnlineToPlainAsync().Result;
}
Expand All @@ -133,7 +133,7 @@ public T OnlineToPlain<T>()
return plain;
}

public void PlainToOnline<T>(T plain)
public virtual void PlainToOnline<T>(T plain)
{
this.PlainToOnlineAsync((dynamic)plain).Wait();
}
Expand All @@ -145,7 +145,7 @@ public async Task<IEnumerable<ITwinPrimitive>> PlainToOnlineAsync(Pocos.Simatic.
return await this.WriteAsync();
}

public T ShadowToPlain<T>()
public virtual T ShadowToPlain<T>()
{
return (dynamic)this.ShadowToPlainAsync().Result;
}
Expand All @@ -165,7 +165,7 @@ public T ShadowToPlain<T>()
return plain;
}

public void PlainToShadow<T>(T plain)
public virtual void PlainToShadow<T>(T plain)
{
this.PlainToShadowAsync((dynamic)plain).Wait();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public Extended(Ix.Connector.ITwinObject parent, string readableTail, string sym
PostConstruct(parent, readableTail, symbolTail);
}

public T OnlineToPlain<T>()
public override T OnlineToPlain<T>()
{
return (dynamic)this.OnlineToPlainAsync().Result;
}
Expand All @@ -33,7 +33,7 @@ public T OnlineToPlain<T>()
return plain;
}

public void PlainToOnline<T>(T plain)
public override void PlainToOnline<T>(T plain)
{
this.PlainToOnlineAsync((dynamic)plain).Wait();
}
Expand All @@ -44,7 +44,7 @@ public async Task<IEnumerable<ITwinPrimitive>> PlainToOnlineAsync(Pocos.Extended
return await this.WriteAsync();
}

public T ShadowToPlain<T>()
public override T ShadowToPlain<T>()
{
return (dynamic)this.ShadowToPlainAsync().Result;
}
Expand All @@ -62,7 +62,7 @@ public T ShadowToPlain<T>()
return plain;
}

public void PlainToShadow<T>(T plain)
public override void PlainToShadow<T>(T plain)
{
this.PlainToShadowAsync((dynamic)plain).Wait();
}
Expand Down Expand Up @@ -101,7 +101,7 @@ public Extendee(Ix.Connector.ITwinObject parent, string readableTail, string sym
PostConstruct(parent, readableTail, symbolTail);
}

public T OnlineToPlain<T>()
public virtual T OnlineToPlain<T>()
{
return (dynamic)this.OnlineToPlainAsync().Result;
}
Expand All @@ -118,7 +118,7 @@ public T OnlineToPlain<T>()
return plain;
}

public void PlainToOnline<T>(T plain)
public virtual void PlainToOnline<T>(T plain)
{
this.PlainToOnlineAsync((dynamic)plain).Wait();
}
Expand All @@ -128,7 +128,7 @@ public async Task<IEnumerable<ITwinPrimitive>> PlainToOnlineAsync(Pocos.Extendee
return await this.WriteAsync();
}

public T ShadowToPlain<T>()
public virtual T ShadowToPlain<T>()
{
return (dynamic)this.ShadowToPlainAsync().Result;
}
Expand All @@ -144,7 +144,7 @@ public T ShadowToPlain<T>()
return plain;
}

public void PlainToShadow<T>(T plain)
public virtual void PlainToShadow<T>(T plain)
{
this.PlainToShadowAsync((dynamic)plain).Wait();
}
Expand Down
Loading