Files
2026-06-04 11:42:34 +02:00

113 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace Google.Protobuf.Reflection
{
// Token: 0x0200006D RID: 109
public sealed class TypeRegistry
{
// Token: 0x170001B4 RID: 436
// (get) Token: 0x06000601 RID: 1537 RVA: 0x00015091 File Offset: 0x00013291
public static TypeRegistry Empty { get; } = new TypeRegistry(new Dictionary<string, MessageDescriptor>());
// Token: 0x06000602 RID: 1538 RVA: 0x00015098 File Offset: 0x00013298
private TypeRegistry(Dictionary<string, MessageDescriptor> fullNameToMessageMap)
{
this.fullNameToMessageMap = fullNameToMessageMap;
}
// Token: 0x06000603 RID: 1539 RVA: 0x000150A8 File Offset: 0x000132A8
public MessageDescriptor Find(string fullName)
{
MessageDescriptor messageDescriptor;
this.fullNameToMessageMap.TryGetValue(fullName, out messageDescriptor);
return messageDescriptor;
}
// Token: 0x06000604 RID: 1540 RVA: 0x000150C5 File Offset: 0x000132C5
public static TypeRegistry FromFiles(params FileDescriptor[] fileDescriptors)
{
return TypeRegistry.FromFiles(fileDescriptors);
}
// Token: 0x06000605 RID: 1541 RVA: 0x000150D0 File Offset: 0x000132D0
public static TypeRegistry FromFiles(IEnumerable<FileDescriptor> fileDescriptors)
{
ProtoPreconditions.CheckNotNull<IEnumerable<FileDescriptor>>(fileDescriptors, "fileDescriptors");
TypeRegistry.Builder builder = new TypeRegistry.Builder();
foreach (FileDescriptor fileDescriptor in fileDescriptors)
{
builder.AddFile(fileDescriptor);
}
return builder.Build();
}
// Token: 0x06000606 RID: 1542 RVA: 0x00015130 File Offset: 0x00013330
public static TypeRegistry FromMessages(params MessageDescriptor[] messageDescriptors)
{
return TypeRegistry.FromMessages(messageDescriptors);
}
// Token: 0x06000607 RID: 1543 RVA: 0x00015138 File Offset: 0x00013338
public static TypeRegistry FromMessages(IEnumerable<MessageDescriptor> messageDescriptors)
{
ProtoPreconditions.CheckNotNull<IEnumerable<MessageDescriptor>>(messageDescriptors, "messageDescriptors");
return TypeRegistry.FromFiles(messageDescriptors.Select((MessageDescriptor md) => md.File));
}
// Token: 0x04000265 RID: 613
private readonly Dictionary<string, MessageDescriptor> fullNameToMessageMap;
// Token: 0x020000C6 RID: 198
private class Builder
{
// Token: 0x06000780 RID: 1920 RVA: 0x00017801 File Offset: 0x00015A01
internal Builder()
{
this.types = new Dictionary<string, MessageDescriptor>();
this.fileDescriptorNames = new HashSet<string>();
}
// Token: 0x06000781 RID: 1921 RVA: 0x00017820 File Offset: 0x00015A20
internal void AddFile(FileDescriptor fileDescriptor)
{
if (!this.fileDescriptorNames.Add(fileDescriptor.Name))
{
return;
}
foreach (FileDescriptor fileDescriptor2 in fileDescriptor.Dependencies)
{
this.AddFile(fileDescriptor2);
}
foreach (MessageDescriptor messageDescriptor in fileDescriptor.MessageTypes)
{
this.AddMessage(messageDescriptor);
}
}
// Token: 0x06000782 RID: 1922 RVA: 0x000178C0 File Offset: 0x00015AC0
private void AddMessage(MessageDescriptor messageDescriptor)
{
foreach (MessageDescriptor messageDescriptor2 in messageDescriptor.NestedTypes)
{
this.AddMessage(messageDescriptor2);
}
this.types[messageDescriptor.FullName] = messageDescriptor;
}
// Token: 0x06000783 RID: 1923 RVA: 0x00017920 File Offset: 0x00015B20
internal TypeRegistry Build()
{
return new TypeRegistry(this.types);
}
// Token: 0x04000301 RID: 769
private readonly Dictionary<string, MessageDescriptor> types;
// Token: 0x04000302 RID: 770
private readonly HashSet<string> fileDescriptorNames;
}
}
}