From 7f90d8ee57d4af4215bc31dbb07726c023c5e047 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Thu, 2 Oct 2008 21:46:17 +0100 Subject: Made things a bit more public for the sake of ProtoGen --- .../ProtocolBuffers/Descriptors/FileDescriptor.cs | 7 +++++- csharp/ProtocolBuffers/Properties/AssemblyInfo.cs | 6 +++++ csharp/ProtocolBuffers/TextFormat.cs | 1 + csharp/ProtocolBuffers/TextGenerator.cs | 26 +++++++++++++++++----- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/csharp/ProtocolBuffers/Descriptors/FileDescriptor.cs b/csharp/ProtocolBuffers/Descriptors/FileDescriptor.cs index 429282b7..3fa3360e 100644 --- a/csharp/ProtocolBuffers/Descriptors/FileDescriptor.cs +++ b/csharp/ProtocolBuffers/Descriptors/FileDescriptor.cs @@ -175,7 +175,8 @@ namespace Google.ProtocolBuffers.Descriptors { /// /// The protocol message form of the FileDescriptor. /// FileDescriptors corresponding to all of the - /// file's dependencies, in the exact order listed in the .proto file + /// file's dependencies, in the exact order listed in the .proto file. May be null, + /// in which case it is treated as an empty array. /// If is not /// a valid descriptor. This can occur for a number of reasons, such as a field /// having an undefined type or because two messages were defined with the same name. @@ -189,6 +190,10 @@ namespace Google.ProtocolBuffers.Descriptors { // FieldDescriptor for an embedded message contains a pointer directly // to the Descriptor for that message's type. We also detect undefined // types in the linking step. + if (dependencies == null) { + dependencies = new FileDescriptor[0]; + } + DescriptorPool pool = new DescriptorPool(dependencies); FileDescriptor result = new FileDescriptor(proto, dependencies, pool); diff --git a/csharp/ProtocolBuffers/Properties/AssemblyInfo.cs b/csharp/ProtocolBuffers/Properties/AssemblyInfo.cs index 8949ec95..749a2e45 100644 --- a/csharp/ProtocolBuffers/Properties/AssemblyInfo.cs +++ b/csharp/ProtocolBuffers/Properties/AssemblyInfo.cs @@ -55,3 +55,9 @@ using System.Runtime.CompilerServices; "72f738140072bb69990bc4f98a21365de2c105e848974a3d210e938b0a56103c0662901efd6b78"+ "0ee6dbe977923d46a8fda18fb25c65dd73b149a5cd9f3100668b56649932dadd8cf5be52eb1dce"+ "ad5cedbf")] +[assembly: InternalsVisibleTo("ProtoGen,PublicKey=" + +"00240000048000009400000006020000002400005253413100040000010001006d739020e13bdc" + +"038e86fa8aa5e1b13aae65d3ae79d622816c6067ab5b6955be50cc887130117582349208c13a55" + +"5e09a6084558f989ccde66094f07822808d3a9b922b0e85b912070032e90bb35360be7efb7982b" + +"702d7a5c6ed1e21d8ca587b4f4c9d2b81210d3641cc75f506cdfc628ac5453ff0a6886986c981d" + +"12245bc7")] diff --git a/csharp/ProtocolBuffers/TextFormat.cs b/csharp/ProtocolBuffers/TextFormat.cs index 48b2d8af..d487bd61 100644 --- a/csharp/ProtocolBuffers/TextFormat.cs +++ b/csharp/ProtocolBuffers/TextFormat.cs @@ -314,6 +314,7 @@ namespace Google.ProtocolBuffers { internal static string EscapeText(string input) { return EscapeBytes(ByteString.CopyFromUtf8(input)); } + /// /// Escapes bytes in the format used in protocol buffer text format, which /// is the same as the format used for C string literals. All bytes diff --git a/csharp/ProtocolBuffers/TextGenerator.cs b/csharp/ProtocolBuffers/TextGenerator.cs index 24961570..3cb8b490 100644 --- a/csharp/ProtocolBuffers/TextGenerator.cs +++ b/csharp/ProtocolBuffers/TextGenerator.cs @@ -20,9 +20,9 @@ using System.Text; namespace Google.ProtocolBuffers { /// - /// Helper class to control indentation + /// Helper class to control indentation. Used for TextFormat and by ProtoGen. /// - internal sealed class TextGenerator { + public sealed class TextGenerator { /// /// Writer to write formatted text to. @@ -40,9 +40,10 @@ namespace Google.ProtocolBuffers { readonly StringBuilder indent = new StringBuilder(); /// - /// Creates a generator writing to the given writer. + /// Creates a generator writing to the given writer. The writer + /// is not closed by this class. /// - internal TextGenerator(TextWriter writer) { + public TextGenerator(TextWriter writer) { this.writer = writer; } @@ -51,20 +52,33 @@ namespace Google.ProtocolBuffers { /// will be inserted at the beginning of each line of text. Indent() may /// be called multiple times to produce deeper indents. /// - internal void Indent() { + public void Indent() { indent.Append(" "); } /// /// Reduces the current indent level by two spaces. /// - internal void Outdent() { + public void Outdent() { if (indent.Length == 0) { throw new InvalidOperationException("Too many calls to Outdent()"); } indent.Length -= 2; } + public void WriteLine(string text) { + Print(text); + Print("\n"); + } + + public void WriteLine(string format, params object[] args) { + WriteLine(string.Format(format, args)); + } + + public void WriteLine() { + WriteLine(""); + } + /// /// Prints the given text to the output stream, indenting at line boundaries. /// -- cgit v1.2.3