Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MetadataUpdater.cs
Go to the documentation of this file.
3
5
6public static class MetadataUpdater
7{
8 public static bool IsSupported { get; } = IsApplyUpdateSupported();
9
10
11 [DllImport("QCall")]
12 private unsafe static extern void ApplyUpdate(QCallAssembly assembly, byte* metadataDelta, int metadataDeltaLength, byte* ilDelta, int ilDeltaLength, byte* pdbDelta, int pdbDeltaLength);
13
14 [DllImport("QCall")]
15 private static extern bool IsApplyUpdateSupported();
16
17 public unsafe static void ApplyUpdate(Assembly assembly, ReadOnlySpan<byte> metadataDelta, ReadOnlySpan<byte> ilDelta, ReadOnlySpan<byte> pdbDelta)
18 {
19 if (!(assembly is RuntimeAssembly runtimeAssembly))
20 {
21 if ((object)assembly == null)
22 {
23 throw new ArgumentNullException("assembly");
24 }
26 }
27 RuntimeAssembly assembly2 = runtimeAssembly;
28 fixed (byte* metadataDelta2 = metadataDelta)
29 {
30 fixed (byte* ilDelta2 = ilDelta)
31 {
32 fixed (byte* pdbDelta2 = pdbDelta)
33 {
34 ApplyUpdate(new QCallAssembly(ref assembly2), metadataDelta2, metadataDelta.Length, ilDelta2, ilDelta.Length, pdbDelta2, pdbDelta.Length);
35 }
36 }
37 }
38 }
39
40 internal static string GetCapabilities()
41 {
42 return "Baseline AddMethodToExistingType AddStaticFieldToExistingType AddInstanceFieldToExistingType NewTypeDefinition ChangeCustomAttributes UpdateParameters";
43 }
44}
static unsafe void ApplyUpdate(QCallAssembly assembly, byte *metadataDelta, int metadataDeltaLength, byte *ilDelta, int ilDeltaLength, byte *pdbDelta, int pdbDeltaLength)
static unsafe void ApplyUpdate(Assembly assembly, ReadOnlySpan< byte > metadataDelta, ReadOnlySpan< byte > ilDelta, ReadOnlySpan< byte > pdbDelta)
static string Argument_MustBeRuntimeAssembly
Definition SR.cs:774
Definition SR.cs:7