| Index: third_party/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs | 
| diff --git a/third_party/protobuf/src/google/protobuf/io/coded_stream_inl.h b/third_party/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs | 
| similarity index 52% | 
| copy from third_party/protobuf/src/google/protobuf/io/coded_stream_inl.h | 
| copy to third_party/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs | 
| index 144f44f0635304bd7acc72ae628eab2d0a1998d3..cfe56fde671e4ae025b7be94d831cbe4621795e6 100644 | 
| --- a/third_party/protobuf/src/google/protobuf/io/coded_stream_inl.h | 
| +++ b/third_party/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs | 
| @@ -1,6 +1,7 @@ | 
| +#region Copyright notice and license | 
| // Protocol Buffers - Google's data interchange format | 
| // Copyright 2008 Google Inc.  All rights reserved. | 
| -// http://code.google.com/p/protobuf/ | 
| +// https://developers.google.com/protocol-buffers/ | 
| // | 
| // Redistribution and use in source and binary forms, with or without | 
| // modification, are permitted provided that the following conditions are | 
| @@ -27,42 +28,44 @@ | 
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| +#endregion | 
|  | 
| -// Author: jasonh@google.com (Jason Hsueh) | 
| -// | 
| -// Implements methods of coded_stream.h that need to be inlined for performance | 
| -// reasons, but should not be defined in a public header. | 
| - | 
| -#ifndef GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ | 
| -#define GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ | 
| +using System; | 
| +using System.Collections; | 
|  | 
| -#include <google/protobuf/io/coded_stream.h> | 
| -#include <string> | 
| -#include <google/protobuf/stubs/stl_util.h> | 
| +namespace Google.Protobuf.Reflection | 
| +{ | 
| +    /// <summary> | 
| +    /// Allows fields to be reflectively accessed. | 
| +    /// </summary> | 
| +    public interface IFieldAccessor | 
| +    { | 
| +        /// <summary> | 
| +        /// Returns the descriptor associated with this field. | 
| +        /// </summary> | 
| +        FieldDescriptor Descriptor { get; } | 
|  | 
| -namespace google { | 
| -namespace protobuf { | 
| -namespace io { | 
| +        /// <summary> | 
| +        /// Clears the field in the specified message. (For repeated fields, | 
| +        /// this clears the list.) | 
| +        /// </summary> | 
| +        void Clear(IMessage message); | 
|  | 
| -inline bool CodedInputStream::InternalReadStringInline(string* buffer, | 
| -                                                       int size) { | 
| -  if (size < 0) return false;  // security: size is often user-supplied | 
| +        /// <summary> | 
| +        /// Fetches the field value. For repeated values, this will be an | 
| +        /// <see cref="IList"/> implementation. For map values, this will be an | 
| +        /// <see cref="IDictionary"/> implementation. | 
| +        /// </summary> | 
| +        object GetValue(IMessage message); | 
|  | 
| -  if (BufferSize() >= size) { | 
| -    STLStringResizeUninitialized(buffer, size); | 
| -    // When buffer is empty, string_as_array(buffer) will return NULL but memcpy | 
| -    // requires non-NULL pointers even when size is 0. Hench this check. | 
| -    if (size > 0) { | 
| -      memcpy(string_as_array(buffer), buffer_, size); | 
| -      Advance(size); | 
| +        /// <summary> | 
| +        /// Mutator for single "simple" fields only. | 
| +        /// </summary> | 
| +        /// <remarks> | 
| +        /// Repeated fields are mutated by fetching the value and manipulating it as a list. | 
| +        /// Map fields are mutated by fetching the value and manipulating it as a dictionary. | 
| +        /// </remarks> | 
| +        /// <exception cref="InvalidOperationException">The field is not a "simple" field.</exception> | 
| +        void SetValue(IMessage message, object value); | 
| } | 
| -    return true; | 
| -  } | 
| - | 
| -  return ReadStringFallback(buffer, size); | 
| -} | 
| - | 
| -}  // namespace io | 
| -}  // namespace protobuf | 
| -}  // namespace google | 
| -#endif  // GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ | 
| +} | 
|  |