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()); // Token: 0x06000602 RID: 1538 RVA: 0x00015098 File Offset: 0x00013298 private TypeRegistry(Dictionary 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 fileDescriptors) { ProtoPreconditions.CheckNotNull>(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 messageDescriptors) { ProtoPreconditions.CheckNotNull>(messageDescriptors, "messageDescriptors"); return TypeRegistry.FromFiles(messageDescriptors.Select((MessageDescriptor md) => md.File)); } // Token: 0x04000265 RID: 613 private readonly Dictionary fullNameToMessageMap; // Token: 0x020000C6 RID: 198 private class Builder { // Token: 0x06000780 RID: 1920 RVA: 0x00017801 File Offset: 0x00015A01 internal Builder() { this.types = new Dictionary(); this.fileDescriptorNames = new HashSet(); } // 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 types; // Token: 0x04000302 RID: 770 private readonly HashSet fileDescriptorNames; } } }