Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MetadataRootBuilder.cs
Go to the documentation of this file.
2
4
5public sealed class MetadataRootBuilder
6{
7 internal static readonly ImmutableArray<int> EmptyRowCounts = ImmutableArray.Create(new int[MetadataTokens.TableCount]);
8
10
12
13 public string MetadataVersion { get; }
14
15 public bool SuppressValidation { get; }
16
18
19 public MetadataRootBuilder(MetadataBuilder tablesAndHeaps, string? metadataVersion = null, bool suppressValidation = false)
20 {
21 if (tablesAndHeaps == null)
22 {
23 Throw.ArgumentNull("tablesAndHeaps");
24 }
25 int num = ((metadataVersion != null) ? BlobUtilities.GetUTF8ByteCount(metadataVersion) : "v4.0.30319".Length);
26 if (num > 254)
27 {
29 }
30 _tablesAndHeaps = tablesAndHeaps;
31 MetadataVersion = metadataVersion ?? "v4.0.30319";
32 SuppressValidation = suppressValidation;
33 _serializedMetadata = tablesAndHeaps.GetSerializedMetadata(EmptyRowCounts, num, isStandaloneDebugMetadata: false);
34 }
35
36 public void Serialize(BlobBuilder builder, int methodBodyStreamRva, int mappedFieldDataStreamRva)
37 {
38 if (builder == null)
39 {
40 Throw.ArgumentNull("builder");
41 }
42 if (methodBodyStreamRva < 0)
43 {
44 Throw.ArgumentOutOfRange("methodBodyStreamRva");
45 }
46 if (mappedFieldDataStreamRva < 0)
47 {
48 Throw.ArgumentOutOfRange("mappedFieldDataStreamRva");
49 }
51 {
53 }
55 _tablesAndHeaps.SerializeMetadataTables(builder, _serializedMetadata.Sizes, _serializedMetadata.StringMap, methodBodyStreamRva, mappedFieldDataStreamRva);
57 }
58}
static unsafe int GetUTF8ByteCount(string str)
void SerializeMetadataTables(BlobBuilder writer, MetadataSizes metadataSizes, ImmutableArray< int > stringMap, int methodBodyStreamRva, int mappedFieldDataStreamRva)
static void SerializeMetadataHeader(BlobBuilder builder, string metadataVersion, MetadataSizes sizes)
SerializedMetadata GetSerializedMetadata(ImmutableArray< int > externalRowCounts, int metadataVersionByteCount, bool isStandaloneDebugMetadata)
void WriteHeapsTo(BlobBuilder builder, BlobBuilder stringHeap)
void Serialize(BlobBuilder builder, int methodBodyStreamRva, int mappedFieldDataStreamRva)
MetadataRootBuilder(MetadataBuilder tablesAndHeaps, string? metadataVersion=null, bool suppressValidation=false)
static readonly ImmutableArray< int > EmptyRowCounts
static void ArgumentNull(string parameterName)
Definition Throw.cs:110
static void ArgumentOutOfRange(string parameterName)
Definition Throw.cs:145
static void InvalidArgument(string message, string parameterName)
Definition Throw.cs:19
static string MetadataVersionTooLong
Definition SR.cs:222
Definition SR.cs:7