a6b99abd13
* Generate structs for structs and fix struct out parameter if known * fmt
274 lines
9.7 KiB
Plaintext
274 lines
9.7 KiB
Plaintext
[
|
|
{
|
|
HintName: ProxyInterfaceSourceGeneratorTests.Source.IFoo3Proxy.g.cs,
|
|
Source:
|
|
//----------------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by https://github.com/specklesystems/ProxyGenerator.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost if
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#nullable enable
|
|
using System;
|
|
|
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
|
{
|
|
public partial interface IFoo3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IFoo3
|
|
{
|
|
global::ProxyInterfaceSourceGeneratorTests.Source.Foo3 _Instance { get; }
|
|
|
|
|
|
}
|
|
}
|
|
#nullable restore
|
|
},
|
|
{
|
|
HintName: ProxyInterfaceSourceGeneratorTests.Source.IBar3Proxy.g.cs,
|
|
Source:
|
|
//----------------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by https://github.com/specklesystems/ProxyGenerator.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost if
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#nullable enable
|
|
using System;
|
|
|
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
|
{
|
|
public partial interface IBar3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IBar3
|
|
{
|
|
global::ProxyInterfaceSourceGeneratorTests.Source.Bar3 _Instance { get; }
|
|
|
|
|
|
}
|
|
}
|
|
#nullable restore
|
|
},
|
|
{
|
|
HintName: ProxyInterfaceSourceGeneratorTests.Source.Foo3Proxy.g.cs,
|
|
Source:
|
|
//----------------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by https://github.com/specklesystems/ProxyGenerator.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost if
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#nullable enable
|
|
using System;
|
|
|
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
|
{
|
|
public partial class Foo3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IFoo3
|
|
{
|
|
public global::ProxyInterfaceSourceGeneratorTests.Source.Foo3 _Instance { get; }
|
|
|
|
public global::ProxyInterfaceSourceGeneratorTests.Source.IBar3 Weird()
|
|
{
|
|
var result_867036441 = _Instance.Weird();
|
|
return Mapster.TypeAdapter.Adapt<global::ProxyInterfaceSourceGeneratorTests.Source.IBar3>(result_867036441);
|
|
}
|
|
|
|
|
|
public Foo3Proxy(global::ProxyInterfaceSourceGeneratorTests.Source.Foo3 instance)
|
|
{
|
|
_Instance = instance;
|
|
|
|
}
|
|
|
|
static Foo3Proxy()
|
|
{
|
|
Mapster.TypeAdapterConfig<global::ProxyInterfaceSourceGeneratorTests.Source.Bar3, global::ProxyInterfaceSourceGeneratorTests.Source.IBar3>.NewConfig().ConstructUsing(instance969373361 => new global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy(instance969373361));
|
|
Mapster.TypeAdapterConfig<global::ProxyInterfaceSourceGeneratorTests.Source.IBar3, global::ProxyInterfaceSourceGeneratorTests.Source.Bar3>.NewConfig().MapWith(proxy339001485 => ((global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy) proxy339001485)._Instance);
|
|
}
|
|
|
|
}
|
|
}
|
|
#nullable restore
|
|
},
|
|
{
|
|
HintName: ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy.g.cs,
|
|
Source:
|
|
//----------------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by https://github.com/specklesystems/ProxyGenerator.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost if
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#nullable enable
|
|
using System;
|
|
|
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
|
{
|
|
public partial class Bar3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IBar3
|
|
{
|
|
public global::ProxyInterfaceSourceGeneratorTests.Source.Bar3 _Instance { get; }
|
|
|
|
|
|
public Bar3Proxy(global::ProxyInterfaceSourceGeneratorTests.Source.Bar3 instance)
|
|
{
|
|
_Instance = instance;
|
|
|
|
}
|
|
|
|
static Bar3Proxy()
|
|
{
|
|
Mapster.TypeAdapterConfig<global::ProxyInterfaceSourceGeneratorTests.Source.Bar3, global::ProxyInterfaceSourceGeneratorTests.Source.IBar3>.NewConfig().ConstructUsing(instance969373361 => new global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy(instance969373361));
|
|
Mapster.TypeAdapterConfig<global::ProxyInterfaceSourceGeneratorTests.Source.IBar3, global::ProxyInterfaceSourceGeneratorTests.Source.Bar3>.NewConfig().MapWith(proxy339001485 => ((global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy) proxy339001485)._Instance);
|
|
}
|
|
|
|
}
|
|
}
|
|
#nullable restore
|
|
},
|
|
{
|
|
HintName: Speckle.ProxyGenerator.Extra.g.cs,
|
|
Source:
|
|
//----------------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by https://github.com/specklesystems/ProxyGenerator
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost if
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//----------------------------------------------------------------------------------------
|
|
|
|
#nullable enable
|
|
using System;
|
|
|
|
namespace Speckle.ProxyGenerator
|
|
{
|
|
[AttributeUsage(AttributeTargets.Interface)]
|
|
internal sealed class ProxyAttribute : Attribute
|
|
{
|
|
public Type Type { get; }
|
|
public ImplementationOptions Options { get; }
|
|
public ProxyClassAccessibility Accessibility { get; }
|
|
public string[]? MembersToIgnore { get; }
|
|
|
|
public ProxyAttribute(Type type) : this(type, ImplementationOptions.None, ProxyClassAccessibility.Public)
|
|
{
|
|
}
|
|
|
|
public ProxyAttribute(Type type, ImplementationOptions options) : this(type, options, ProxyClassAccessibility.Public)
|
|
{
|
|
}
|
|
|
|
public ProxyAttribute(Type type, ProxyClassAccessibility accessibility) : this(type, ImplementationOptions.None, accessibility)
|
|
{
|
|
}
|
|
|
|
public ProxyAttribute(Type type, ImplementationOptions options, ProxyClassAccessibility accessibility) : this(type, options, accessibility, null)
|
|
{
|
|
}
|
|
|
|
public ProxyAttribute(Type type, string[]? membersToIgnore) : this(type, ImplementationOptions.None, ProxyClassAccessibility.Public, null)
|
|
{
|
|
}
|
|
|
|
public ProxyAttribute(Type type, ImplementationOptions options, string[]? membersToIgnore) : this(type, options, ProxyClassAccessibility.Public, null)
|
|
{
|
|
}
|
|
|
|
public ProxyAttribute(Type type, ImplementationOptions options, ProxyClassAccessibility accessibility, string[]? membersToIgnore)
|
|
{
|
|
Type = type;
|
|
Options = options;
|
|
Accessibility = accessibility;
|
|
MembersToIgnore = membersToIgnore;
|
|
}
|
|
}
|
|
|
|
[Flags]
|
|
internal enum ProxyClassAccessibility
|
|
{
|
|
Public = 0,
|
|
|
|
Internal = 1
|
|
}
|
|
[Flags]
|
|
internal enum ImplementationOptions
|
|
{
|
|
None = 0,
|
|
|
|
ProxyBaseClasses = 1,
|
|
|
|
ProxyInterfaces = 2,
|
|
|
|
UseExtendedInterfaces = 4,
|
|
|
|
ProxyForBaseInterface = 8
|
|
}
|
|
|
|
public static class ProxyMap
|
|
{
|
|
private static readonly global::System.Collections.Concurrent.ConcurrentDictionary<Type, Type> s_revitToInterfaceMap = new();
|
|
private static readonly global::System.Collections.Concurrent.ConcurrentDictionary<Type, Type> s_proxyToInterfaceMap = new();
|
|
private static readonly global::System.Collections.Concurrent.ConcurrentDictionary<Type, Type> s_interfaceToRevit = new();
|
|
private static readonly global::System.Collections.Concurrent.ConcurrentDictionary<Type, Func<object, object>> s_proxyFactory = new();
|
|
|
|
static ProxyMap()
|
|
{
|
|
Add<ProxyInterfaceSourceGeneratorTests.Source.Foo3, global::ProxyInterfaceSourceGeneratorTests.Source.IFoo3, ProxyInterfaceSourceGeneratorTests.Source.Foo3Proxy>(x => new ProxyInterfaceSourceGeneratorTests.Source.Foo3Proxy(x));
|
|
Add<ProxyInterfaceSourceGeneratorTests.Source.Bar3, global::ProxyInterfaceSourceGeneratorTests.Source.IBar3, ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy>(x => new ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy(x));
|
|
|
|
}
|
|
|
|
private static void Add<T, TInterface, TProxy>(Func<T, TProxy> f)
|
|
where TInterface : notnull
|
|
where TProxy : TInterface
|
|
{
|
|
s_revitToInterfaceMap.TryAdd(typeof(T), typeof(TInterface));
|
|
s_proxyToInterfaceMap.TryAdd(typeof(TProxy), typeof(TInterface));
|
|
s_proxyFactory.TryAdd(typeof(TInterface), w => f((T)w));
|
|
s_interfaceToRevit.TryAdd(typeof(TInterface), typeof(T));
|
|
}
|
|
|
|
public static Type? GetMappedTypeFromHostType(Type type)
|
|
{
|
|
if (s_revitToInterfaceMap.TryGetValue(type, out var t))
|
|
{
|
|
return t;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static Type? GetMappedTypeFromProxyType(Type type)
|
|
{
|
|
if (s_proxyToInterfaceMap.TryGetValue(type, out var t))
|
|
{
|
|
return t;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static Type? GetHostTypeFromMappedType(Type type)
|
|
{
|
|
if (s_interfaceToRevit.TryGetValue(type, out var t))
|
|
{
|
|
return t;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static object CreateProxy(Type type, object toWrap) => s_proxyFactory[type](toWrap);
|
|
public static T CreateProxy<T>(object toWrap) => (T)CreateProxy(typeof(T), toWrap);
|
|
}
|
|
#nullable restore
|
|
}
|
|
}
|
|
] |