google-protobuf 3.24.4-x86-linux → 3.25.0.rc.1-x86-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of google-protobuf might be problematic. Click here for more details.
- checksums.yaml +4 -4
 - data/ext/google/protobuf_c/Rakefile +3 -0
 - data/ext/google/protobuf_c/convert.c +23 -70
 - data/ext/google/protobuf_c/convert.h +3 -26
 - data/ext/google/protobuf_c/defs.c +3 -26
 - data/ext/google/protobuf_c/defs.h +3 -26
 - data/ext/google/protobuf_c/extconf.rb +2 -1
 - data/ext/google/protobuf_c/glue.c +21 -0
 - data/ext/google/protobuf_c/map.c +3 -26
 - data/ext/google/protobuf_c/map.h +3 -26
 - data/ext/google/protobuf_c/message.c +21 -69
 - data/ext/google/protobuf_c/message.h +3 -26
 - data/ext/google/protobuf_c/protobuf.c +3 -26
 - data/ext/google/protobuf_c/protobuf.h +3 -26
 - data/ext/google/protobuf_c/repeated_field.c +4 -27
 - data/ext/google/protobuf_c/repeated_field.h +3 -26
 - data/ext/google/protobuf_c/ruby-upb.c +8351 -8160
 - data/ext/google/protobuf_c/ruby-upb.h +4077 -3784
 - data/ext/google/protobuf_c/shared_convert.c +64 -0
 - data/ext/google/protobuf_c/shared_convert.h +26 -0
 - data/ext/google/protobuf_c/shared_message.c +65 -0
 - data/ext/google/protobuf_c/shared_message.h +25 -0
 - data/ext/google/protobuf_c/wrap_memcpy.c +3 -26
 - data/lib/google/2.7/protobuf_c.so +0 -0
 - data/lib/google/3.0/protobuf_c.so +0 -0
 - data/lib/google/3.1/protobuf_c.so +0 -0
 - data/lib/google/3.2/protobuf_c.so +0 -0
 - data/lib/google/protobuf/any_pb.rb +1 -1
 - data/lib/google/protobuf/api_pb.rb +1 -1
 - data/lib/google/protobuf/descriptor_pb.rb +6 -3
 - data/lib/google/protobuf/duration_pb.rb +1 -1
 - data/lib/google/protobuf/empty_pb.rb +1 -1
 - data/lib/google/protobuf/ffi/descriptor.rb +154 -0
 - data/lib/google/protobuf/ffi/descriptor_pool.rb +70 -0
 - data/lib/google/protobuf/ffi/enum_descriptor.rb +161 -0
 - data/lib/google/protobuf/ffi/ffi.rb +213 -0
 - data/lib/google/protobuf/ffi/field_descriptor.rb +309 -0
 - data/lib/google/protobuf/ffi/file_descriptor.rb +48 -0
 - data/lib/google/protobuf/ffi/internal/arena.rb +66 -0
 - data/lib/google/protobuf/ffi/internal/convert.rb +305 -0
 - data/lib/google/protobuf/ffi/internal/pointer_helper.rb +35 -0
 - data/lib/google/protobuf/ffi/internal/type_safety.rb +25 -0
 - data/lib/google/protobuf/ffi/map.rb +396 -0
 - data/lib/google/protobuf/ffi/message.rb +641 -0
 - data/lib/google/protobuf/ffi/object_cache.rb +30 -0
 - data/lib/google/protobuf/ffi/oneof_descriptor.rb +88 -0
 - data/lib/google/protobuf/ffi/repeated_field.rb +503 -0
 - data/lib/google/protobuf/field_mask_pb.rb +1 -1
 - data/lib/google/protobuf/message_exts.rb +3 -26
 - data/lib/google/protobuf/object_cache.rb +3 -26
 - data/lib/google/protobuf/plugin_pb.rb +1 -1
 - data/lib/google/protobuf/repeated_field.rb +3 -26
 - data/lib/google/protobuf/source_context_pb.rb +1 -1
 - data/lib/google/protobuf/struct_pb.rb +1 -1
 - data/lib/google/protobuf/timestamp_pb.rb +1 -1
 - data/lib/google/protobuf/type_pb.rb +1 -1
 - data/lib/google/protobuf/well_known_types.rb +3 -26
 - data/lib/google/protobuf/wrappers_pb.rb +1 -1
 - data/lib/google/protobuf.rb +26 -45
 - data/lib/google/protobuf_ffi.rb +50 -0
 - data/lib/google/protobuf_native.rb +20 -0
 - data/lib/google/tasks/ffi.rake +94 -0
 - metadata +71 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c076a7a7019b4c90eca72e7459bbd910be1555a742e248d2f48849fe65df0251
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f41c4ce1d073dce0f42bff1a5859b08a46752753299ac1c0311467f1442dcc4b
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 8eace070b6e2e7a06a5cf7c73fca7b44d5220002dd35e8505f47bce1851fce93a8b2585f88a7075c770ac72ea3b080c9c3f8208cc174ccbe0934f67cfa9a3a1c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a6694178800da7daea706a75f7c87481679d6d9ef4b0c53dd60f906906c85aa63cf6f2622ec3c9e9dd665f34cb972325372a78294acd54f74d6663550737004b
         
     | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2008 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            // -----------------------------------------------------------------------------
         
     | 
| 
       32 
9 
     | 
    
         
             
            // Ruby <-> upb data conversion functions.
         
     | 
| 
         @@ -41,6 +18,7 @@ 
     | 
|
| 
       41 
18 
     | 
    
         | 
| 
       42 
19 
     | 
    
         
             
            #include "message.h"
         
     | 
| 
       43 
20 
     | 
    
         
             
            #include "protobuf.h"
         
     | 
| 
      
 21 
     | 
    
         
            +
            #include "shared_convert.h"
         
     | 
| 
       44 
22 
     | 
    
         | 
| 
       45 
23 
     | 
    
         
             
            static upb_StringView Convert_StringData(VALUE str, upb_Arena* arena) {
         
     | 
| 
       46 
24 
     | 
    
         
             
              upb_StringView ret;
         
     | 
| 
         @@ -111,8 +89,7 @@ static int32_t Convert_ToEnum(VALUE value, const char* name, 
     | 
|
| 
       111 
89 
     | 
    
         
             
                case T_SYMBOL: {
         
     | 
| 
       112 
90 
     | 
    
         
             
                  const upb_EnumValueDef* ev =
         
     | 
| 
       113 
91 
     | 
    
         
             
                      upb_EnumDef_FindValueByName(e, rb_id2name(SYM2ID(value)));
         
     | 
| 
       114 
     | 
    
         
            -
                  if (!ev)
         
     | 
| 
       115 
     | 
    
         
            -
                    goto unknownval;
         
     | 
| 
      
 92 
     | 
    
         
            +
                  if (!ev) goto unknownval;
         
     | 
| 
       116 
93 
     | 
    
         
             
                  val = upb_EnumValueDef_Number(ev);
         
     | 
| 
       117 
94 
     | 
    
         
             
                  break;
         
     | 
| 
       118 
95 
     | 
    
         
             
                }
         
     | 
| 
         @@ -194,7 +171,7 @@ upb_MessageValue Convert_RubyToUpb(VALUE value, const char* name, 
     | 
|
| 
       194 
171 
     | 
    
         
             
                  if (rb_obj_encoding(value) != bytes) {
         
     | 
| 
       195 
172 
     | 
    
         
             
                    // Note: this will not duplicate underlying string data unless
         
     | 
| 
       196 
173 
     | 
    
         
             
                    // necessary.
         
     | 
| 
       197 
     | 
    
         
            -
                    // TODO 
     | 
| 
      
 174 
     | 
    
         
            +
                    // TODO: is this really necessary to get raw bytes?
         
     | 
| 
       198 
175 
     | 
    
         
             
                    value = rb_str_encode(value, bytes, 0, Qnil);
         
     | 
| 
       199 
176 
     | 
    
         
             
                  }
         
     | 
| 
       200 
177 
     | 
    
         | 
| 
         @@ -255,7 +232,7 @@ VALUE Convert_UpbToRuby(upb_MessageValue upb_val, TypeInfo type_info, 
     | 
|
| 
       255 
232 
     | 
    
         
             
                case kUpb_CType_UInt64:
         
     | 
| 
       256 
233 
     | 
    
         
             
                  return ULL2NUM(upb_val.int64_val);
         
     | 
| 
       257 
234 
     | 
    
         
             
                case kUpb_CType_Enum: {
         
     | 
| 
       258 
     | 
    
         
            -
                  const upb_EnumValueDef  
     | 
| 
      
 235 
     | 
    
         
            +
                  const upb_EnumValueDef* ev = upb_EnumDef_FindValueByNumber(
         
     | 
| 
       259 
236 
     | 
    
         
             
                      type_info.def.enumdef, upb_val.int32_val);
         
     | 
| 
       260 
237 
     | 
    
         
             
                  if (ev) {
         
     | 
| 
       261 
238 
     | 
    
         
             
                    return ID2SYM(rb_intern(upb_EnumValueDef_Name(ev)));
         
     | 
| 
         @@ -312,50 +289,26 @@ upb_MessageValue Msgval_DeepCopy(upb_MessageValue msgval, TypeInfo type_info, 
     | 
|
| 
       312 
289 
     | 
    
         | 
| 
       313 
290 
     | 
    
         
             
            bool Msgval_IsEqual(upb_MessageValue val1, upb_MessageValue val2,
         
     | 
| 
       314 
291 
     | 
    
         
             
                                TypeInfo type_info) {
         
     | 
| 
       315 
     | 
    
         
            -
               
     | 
| 
       316 
     | 
    
         
            -
             
     | 
| 
       317 
     | 
    
         
            -
             
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
             
     | 
| 
       320 
     | 
    
         
            -
                 
     | 
| 
       321 
     | 
    
         
            -
             
     | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
       323 
     | 
    
         
            -
                case kUpb_CType_Double:
         
     | 
| 
       324 
     | 
    
         
            -
                case kUpb_CType_Int64:
         
     | 
| 
       325 
     | 
    
         
            -
                case kUpb_CType_UInt64:
         
     | 
| 
       326 
     | 
    
         
            -
                  return memcmp(&val1, &val2, 8) == 0;
         
     | 
| 
       327 
     | 
    
         
            -
                case kUpb_CType_String:
         
     | 
| 
       328 
     | 
    
         
            -
                case kUpb_CType_Bytes:
         
     | 
| 
       329 
     | 
    
         
            -
                  return val1.str_val.size == val2.str_val.size &&
         
     | 
| 
       330 
     | 
    
         
            -
                         memcmp(val1.str_val.data, val2.str_val.data, val1.str_val.size) ==
         
     | 
| 
       331 
     | 
    
         
            -
                             0;
         
     | 
| 
       332 
     | 
    
         
            -
                case kUpb_CType_Message:
         
     | 
| 
       333 
     | 
    
         
            -
                  return Message_Equal(val1.msg_val, val2.msg_val, type_info.def.msgdef);
         
     | 
| 
       334 
     | 
    
         
            -
                default:
         
     | 
| 
       335 
     | 
    
         
            -
                  rb_raise(rb_eRuntimeError, "Internal error, unexpected type");
         
     | 
| 
      
 292 
     | 
    
         
            +
              upb_Status status;
         
     | 
| 
      
 293 
     | 
    
         
            +
              upb_Status_Clear(&status);
         
     | 
| 
      
 294 
     | 
    
         
            +
              bool return_value = shared_Msgval_IsEqual(val1, val2, type_info.type,
         
     | 
| 
      
 295 
     | 
    
         
            +
                                                        type_info.def.msgdef, &status);
         
     | 
| 
      
 296 
     | 
    
         
            +
              if (upb_Status_IsOk(&status)) {
         
     | 
| 
      
 297 
     | 
    
         
            +
                return return_value;
         
     | 
| 
      
 298 
     | 
    
         
            +
              } else {
         
     | 
| 
      
 299 
     | 
    
         
            +
                rb_raise(rb_eRuntimeError, upb_Status_ErrorMessage(&status));
         
     | 
| 
       336 
300 
     | 
    
         
             
              }
         
     | 
| 
       337 
301 
     | 
    
         
             
            }
         
     | 
| 
       338 
302 
     | 
    
         | 
| 
       339 
303 
     | 
    
         
             
            uint64_t Msgval_GetHash(upb_MessageValue val, TypeInfo type_info,
         
     | 
| 
       340 
304 
     | 
    
         
             
                                    uint64_t seed) {
         
     | 
| 
       341 
     | 
    
         
            -
               
     | 
| 
       342 
     | 
    
         
            -
             
     | 
| 
       343 
     | 
    
         
            -
             
     | 
| 
       344 
     | 
    
         
            -
             
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
                 
     | 
| 
       347 
     | 
    
         
            -
             
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
       349 
     | 
    
         
            -
                case kUpb_CType_Double:
         
     | 
| 
       350 
     | 
    
         
            -
                case kUpb_CType_Int64:
         
     | 
| 
       351 
     | 
    
         
            -
                case kUpb_CType_UInt64:
         
     | 
| 
       352 
     | 
    
         
            -
                  return _upb_Hash(&val, 8, seed);
         
     | 
| 
       353 
     | 
    
         
            -
                case kUpb_CType_String:
         
     | 
| 
       354 
     | 
    
         
            -
                case kUpb_CType_Bytes:
         
     | 
| 
       355 
     | 
    
         
            -
                  return _upb_Hash(val.str_val.data, val.str_val.size, seed);
         
     | 
| 
       356 
     | 
    
         
            -
                case kUpb_CType_Message:
         
     | 
| 
       357 
     | 
    
         
            -
                  return Message_Hash(val.msg_val, type_info.def.msgdef, seed);
         
     | 
| 
       358 
     | 
    
         
            -
                default:
         
     | 
| 
       359 
     | 
    
         
            -
                  rb_raise(rb_eRuntimeError, "Internal error, unexpected type");
         
     | 
| 
      
 305 
     | 
    
         
            +
              upb_Status status;
         
     | 
| 
      
 306 
     | 
    
         
            +
              upb_Status_Clear(&status);
         
     | 
| 
      
 307 
     | 
    
         
            +
              uint64_t return_value = shared_Msgval_GetHash(
         
     | 
| 
      
 308 
     | 
    
         
            +
                  val, type_info.type, type_info.def.msgdef, seed, &status);
         
     | 
| 
      
 309 
     | 
    
         
            +
              if (upb_Status_IsOk(&status)) {
         
     | 
| 
      
 310 
     | 
    
         
            +
                return return_value;
         
     | 
| 
      
 311 
     | 
    
         
            +
              } else {
         
     | 
| 
      
 312 
     | 
    
         
            +
                rb_raise(rb_eRuntimeError, upb_Status_ErrorMessage(&status));
         
     | 
| 
       360 
313 
     | 
    
         
             
              }
         
     | 
| 
       361 
314 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2008 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #ifndef RUBY_PROTOBUF_CONVERT_H_
         
     | 
| 
       32 
9 
     | 
    
         
             
            #define RUBY_PROTOBUF_CONVERT_H_
         
     | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2014 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #include <ctype.h>
         
     | 
| 
       32 
9 
     | 
    
         
             
            #include <errno.h>
         
     | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2008 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #ifndef RUBY_PROTOBUF_DEFS_H_
         
     | 
| 
       32 
9 
     | 
    
         
             
            #define RUBY_PROTOBUF_DEFS_H_
         
     | 
| 
         @@ -22,6 +22,7 @@ $INCFLAGS += " -I$(srcdir)/third_party/utf8_range" 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            $srcs = ["protobuf.c", "convert.c", "defs.c", "message.c",
         
     | 
| 
       24 
24 
     | 
    
         
             
                     "repeated_field.c", "map.c", "ruby-upb.c", "wrap_memcpy.c",
         
     | 
| 
       25 
     | 
    
         
            -
                     "naive.c", "range2-neon.c", "range2-sse.c" 
     | 
| 
      
 25 
     | 
    
         
            +
                     "naive.c", "range2-neon.c", "range2-sse.c", "shared_convert.c",
         
     | 
| 
      
 26 
     | 
    
         
            +
                     "shared_message.c"]
         
     | 
| 
       26 
27 
     | 
    
         | 
| 
       27 
28 
     | 
    
         
             
            create_makefile(ext_name)
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
      
 2 
     | 
    
         
            +
            // Copyright 2023 Google Inc.  All rights reserved.
         
     | 
| 
      
 3 
     | 
    
         
            +
            //
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            // -----------------------------------------------------------------------------
         
     | 
| 
      
 9 
     | 
    
         
            +
            // Exposing inlined UPB functions. Strictly free of dependencies on
         
     | 
| 
      
 10 
     | 
    
         
            +
            // Ruby interpreter internals.
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            #include "ruby-upb.h"
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            upb_Arena* Arena_create() { return upb_Arena_Init(NULL, 0, &upb_alloc_global); }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            google_protobuf_FileDescriptorProto* FileDescriptorProto_parse(
         
     | 
| 
      
 17 
     | 
    
         
            +
                const char* serialized_file_proto, size_t length) {
         
     | 
| 
      
 18 
     | 
    
         
            +
              upb_Arena* arena = Arena_create();
         
     | 
| 
      
 19 
     | 
    
         
            +
              return google_protobuf_FileDescriptorProto_parse(serialized_file_proto,
         
     | 
| 
      
 20 
     | 
    
         
            +
                                                               length, arena);
         
     | 
| 
      
 21 
     | 
    
         
            +
            }
         
     | 
    
        data/ext/google/protobuf_c/map.c
    CHANGED
    
    | 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2014 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #include "convert.h"
         
     | 
| 
       32 
9 
     | 
    
         
             
            #include "defs.h"
         
     | 
    
        data/ext/google/protobuf_c/map.h
    CHANGED
    
    | 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2008 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #ifndef RUBY_PROTOBUF_MAP_H_
         
     | 
| 
       32 
9 
     | 
    
         
             
            #define RUBY_PROTOBUF_MAP_H_
         
     | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2014 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #include "message.h"
         
     | 
| 
       32 
9 
     | 
    
         | 
| 
         @@ -35,6 +12,7 @@ 
     | 
|
| 
       35 
12 
     | 
    
         
             
            #include "map.h"
         
     | 
| 
       36 
13 
     | 
    
         
             
            #include "protobuf.h"
         
     | 
| 
       37 
14 
     | 
    
         
             
            #include "repeated_field.h"
         
     | 
| 
      
 15 
     | 
    
         
            +
            #include "shared_message.h"
         
     | 
| 
       38 
16 
     | 
    
         | 
| 
       39 
17 
     | 
    
         
             
            static VALUE cParseError = Qnil;
         
     | 
| 
       40 
18 
     | 
    
         
             
            static VALUE cAbstractMessage = Qnil;
         
     | 
| 
         @@ -684,8 +662,8 @@ static VALUE Message_dup(VALUE _self) { 
     | 
|
| 
       684 
662 
     | 
    
         
             
              Message* new_msg_self = ruby_to_Message(new_msg);
         
     | 
| 
       685 
663 
     | 
    
         
             
              size_t size = upb_MessageDef_MiniTable(self->msgdef)->size;
         
     | 
| 
       686 
664 
     | 
    
         | 
| 
       687 
     | 
    
         
            -
              // TODO 
     | 
| 
       688 
     | 
    
         
            -
              // TODO 
     | 
| 
      
 665 
     | 
    
         
            +
              // TODO
         
     | 
| 
      
 666 
     | 
    
         
            +
              // TODO
         
     | 
| 
       689 
667 
     | 
    
         
             
              memcpy((upb_Message*)new_msg_self->msg, self->msg, size);
         
     | 
| 
       690 
668 
     | 
    
         
             
              Arena_fuse(self->arena, Arena_get(new_msg_self->arena));
         
     | 
| 
       691 
669 
     | 
    
         
             
              return new_msg;
         
     | 
| 
         @@ -694,29 +672,13 @@ static VALUE Message_dup(VALUE _self) { 
     | 
|
| 
       694 
672 
     | 
    
         
             
            // Support function for Message_eq, and also used by other #eq functions.
         
     | 
| 
       695 
673 
     | 
    
         
             
            bool Message_Equal(const upb_Message* m1, const upb_Message* m2,
         
     | 
| 
       696 
674 
     | 
    
         
             
                               const upb_MessageDef* m) {
         
     | 
| 
       697 
     | 
    
         
            -
               
     | 
| 
       698 
     | 
    
         
            -
             
     | 
| 
       699 
     | 
    
         
            -
               
     | 
| 
       700 
     | 
    
         
            -
               
     | 
| 
       701 
     | 
    
         
            -
             
     | 
| 
       702 
     | 
    
         
            -
              upb_Arena* arena_tmp = upb_Arena_New();
         
     | 
| 
       703 
     | 
    
         
            -
              const upb_MiniTable* layout = upb_MessageDef_MiniTable(m);
         
     | 
| 
       704 
     | 
    
         
            -
             
     | 
| 
       705 
     | 
    
         
            -
              // Compare deterministically serialized payloads with no unknown fields.
         
     | 
| 
       706 
     | 
    
         
            -
              char* data1;
         
     | 
| 
       707 
     | 
    
         
            -
              char* data2;
         
     | 
| 
       708 
     | 
    
         
            -
              upb_EncodeStatus status1 =
         
     | 
| 
       709 
     | 
    
         
            -
                  upb_Encode(m1, layout, encode_opts, arena_tmp, &data1, &size1);
         
     | 
| 
       710 
     | 
    
         
            -
              upb_EncodeStatus status2 =
         
     | 
| 
       711 
     | 
    
         
            -
                  upb_Encode(m2, layout, encode_opts, arena_tmp, &data2, &size2);
         
     | 
| 
       712 
     | 
    
         
            -
             
     | 
| 
       713 
     | 
    
         
            -
              if (status1 == kUpb_EncodeStatus_Ok && status2 == kUpb_EncodeStatus_Ok) {
         
     | 
| 
       714 
     | 
    
         
            -
                bool ret = (size1 == size2) && (memcmp(data1, data2, size1) == 0);
         
     | 
| 
       715 
     | 
    
         
            -
                upb_Arena_Free(arena_tmp);
         
     | 
| 
       716 
     | 
    
         
            -
                return ret;
         
     | 
| 
      
 675 
     | 
    
         
            +
              upb_Status status;
         
     | 
| 
      
 676 
     | 
    
         
            +
              upb_Status_Clear(&status);
         
     | 
| 
      
 677 
     | 
    
         
            +
              bool return_value = shared_Message_Equal(m1, m2, m, &status);
         
     | 
| 
      
 678 
     | 
    
         
            +
              if (upb_Status_IsOk(&status)) {
         
     | 
| 
      
 679 
     | 
    
         
            +
                return return_value;
         
     | 
| 
       717 
680 
     | 
    
         
             
              } else {
         
     | 
| 
       718 
     | 
    
         
            -
                 
     | 
| 
       719 
     | 
    
         
            -
                rb_raise(cParseError, "Error comparing messages");
         
     | 
| 
      
 681 
     | 
    
         
            +
                rb_raise(cParseError, upb_Status_ErrorMessage(&status));
         
     | 
| 
       720 
682 
     | 
    
         
             
              }
         
     | 
| 
       721 
683 
     | 
    
         
             
            }
         
     | 
| 
       722 
684 
     | 
    
         | 
| 
         @@ -741,23 +703,13 @@ static VALUE Message_eq(VALUE _self, VALUE _other) { 
     | 
|
| 
       741 
703 
     | 
    
         | 
| 
       742 
704 
     | 
    
         
             
            uint64_t Message_Hash(const upb_Message* msg, const upb_MessageDef* m,
         
     | 
| 
       743 
705 
     | 
    
         
             
                                  uint64_t seed) {
         
     | 
| 
       744 
     | 
    
         
            -
               
     | 
| 
       745 
     | 
    
         
            -
               
     | 
| 
       746 
     | 
    
         
            -
               
     | 
| 
       747 
     | 
    
         
            -
             
     | 
| 
       748 
     | 
    
         
            -
             
     | 
| 
       749 
     | 
    
         
            -
              upb_EncodeStatus status = upb_Encode(
         
     | 
| 
       750 
     | 
    
         
            -
                  msg, upb_MessageDef_MiniTable(m),
         
     | 
| 
       751 
     | 
    
         
            -
                  kUpb_EncodeOption_SkipUnknown | kUpb_EncodeOption_Deterministic, arena,
         
     | 
| 
       752 
     | 
    
         
            -
                  &data, &size);
         
     | 
| 
       753 
     | 
    
         
            -
             
     | 
| 
       754 
     | 
    
         
            -
              if (status == kUpb_EncodeStatus_Ok) {
         
     | 
| 
       755 
     | 
    
         
            -
                uint64_t ret = _upb_Hash(data, size, seed);
         
     | 
| 
       756 
     | 
    
         
            -
                upb_Arena_Free(arena);
         
     | 
| 
       757 
     | 
    
         
            -
                return ret;
         
     | 
| 
      
 706 
     | 
    
         
            +
              upb_Status status;
         
     | 
| 
      
 707 
     | 
    
         
            +
              upb_Status_Clear(&status);
         
     | 
| 
      
 708 
     | 
    
         
            +
              uint64_t return_value = shared_Message_Hash(msg, m, seed, &status);
         
     | 
| 
      
 709 
     | 
    
         
            +
              if (upb_Status_IsOk(&status)) {
         
     | 
| 
      
 710 
     | 
    
         
            +
                return return_value;
         
     | 
| 
       758 
711 
     | 
    
         
             
              } else {
         
     | 
| 
       759 
     | 
    
         
            -
                 
     | 
| 
       760 
     | 
    
         
            -
                rb_raise(cParseError, "Error calculating hash");
         
     | 
| 
      
 712 
     | 
    
         
            +
                rb_raise(cParseError, upb_Status_ErrorMessage(&status));
         
     | 
| 
       761 
713 
     | 
    
         
             
              }
         
     | 
| 
       762 
714 
     | 
    
         
             
            }
         
     | 
| 
       763 
715 
     | 
    
         | 
| 
         @@ -1022,7 +974,7 @@ static VALUE Message_decode_json(int argc, VALUE* argv, VALUE klass) { 
     | 
|
| 
       1022 
974 
     | 
    
         
             
              int options = 0;
         
     | 
| 
       1023 
975 
     | 
    
         
             
              upb_Status status;
         
     | 
| 
       1024 
976 
     | 
    
         | 
| 
       1025 
     | 
    
         
            -
              // TODO 
     | 
| 
      
 977 
     | 
    
         
            +
              // TODO: use this message's pool instead.
         
     | 
| 
       1026 
978 
     | 
    
         
             
              const upb_DefPool* symtab = DescriptorPool_GetSymtab(generated_pool);
         
     | 
| 
       1027 
979 
     | 
    
         | 
| 
       1028 
980 
     | 
    
         
             
              if (argc < 1 || argc > 2) {
         
     | 
| 
         @@ -1045,7 +997,7 @@ static VALUE Message_decode_json(int argc, VALUE* argv, VALUE klass) { 
     | 
|
| 
       1045 
997 
     | 
    
         
             
                rb_raise(rb_eArgError, "Expected string for JSON data.");
         
     | 
| 
       1046 
998 
     | 
    
         
             
              }
         
     | 
| 
       1047 
999 
     | 
    
         | 
| 
       1048 
     | 
    
         
            -
              // TODO 
     | 
| 
      
 1000 
     | 
    
         
            +
              // TODO: Check and respect string encoding. If not UTF-8, we need to
         
     | 
| 
       1049 
1001 
     | 
    
         
             
              // convert, because string handlers pass data directly to message string
         
     | 
| 
       1050 
1002 
     | 
    
         
             
              // fields.
         
     | 
| 
       1051 
1003 
     | 
    
         | 
| 
         @@ -1138,7 +1090,7 @@ static VALUE Message_encode_json(int argc, VALUE* argv, VALUE klass) { 
     | 
|
| 
       1138 
1090 
     | 
    
         
             
              size_t size;
         
     | 
| 
       1139 
1091 
     | 
    
         
             
              upb_Status status;
         
     | 
| 
       1140 
1092 
     | 
    
         | 
| 
       1141 
     | 
    
         
            -
              // TODO 
     | 
| 
      
 1093 
     | 
    
         
            +
              // TODO: use this message's pool instead.
         
     | 
| 
       1142 
1094 
     | 
    
         
             
              const upb_DefPool* symtab = DescriptorPool_GetSymtab(generated_pool);
         
     | 
| 
       1143 
1095 
     | 
    
         | 
| 
       1144 
1096 
     | 
    
         
             
              if (argc < 1 || argc > 2) {
         
     | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2008 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #ifndef RUBY_PROTOBUF_MESSAGE_H_
         
     | 
| 
       32 
9 
     | 
    
         
             
            #define RUBY_PROTOBUF_MESSAGE_H_
         
     | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2014 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #include "protobuf.h"
         
     | 
| 
       32 
9 
     | 
    
         | 
| 
         @@ -1,32 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // Protocol Buffers - Google's data interchange format
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Copyright 2014 Google Inc.  All rights reserved.
         
     | 
| 
       3 
     | 
    
         
            -
            // https://developers.google.com/protocol-buffers/
         
     | 
| 
       4 
3 
     | 
    
         
             
            //
         
     | 
| 
       5 
     | 
    
         
            -
            //  
     | 
| 
       6 
     | 
    
         
            -
            //  
     | 
| 
       7 
     | 
    
         
            -
            //  
     | 
| 
       8 
     | 
    
         
            -
            //
         
     | 
| 
       9 
     | 
    
         
            -
            //     * Redistributions of source code must retain the above copyright
         
     | 
| 
       10 
     | 
    
         
            -
            // notice, this list of conditions and the following disclaimer.
         
     | 
| 
       11 
     | 
    
         
            -
            //     * Redistributions in binary form must reproduce the above
         
     | 
| 
       12 
     | 
    
         
            -
            // copyright notice, this list of conditions and the following disclaimer
         
     | 
| 
       13 
     | 
    
         
            -
            // in the documentation and/or other materials provided with the
         
     | 
| 
       14 
     | 
    
         
            -
            // distribution.
         
     | 
| 
       15 
     | 
    
         
            -
            //     * Neither the name of Google Inc. nor the names of its
         
     | 
| 
       16 
     | 
    
         
            -
            // contributors may be used to endorse or promote products derived from
         
     | 
| 
       17 
     | 
    
         
            -
            // this software without specific prior written permission.
         
     | 
| 
       18 
     | 
    
         
            -
            //
         
     | 
| 
       19 
     | 
    
         
            -
            // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
         
     | 
| 
       20 
     | 
    
         
            -
            // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
         
     | 
| 
       21 
     | 
    
         
            -
            // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
         
     | 
| 
       22 
     | 
    
         
            -
            // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
         
     | 
| 
       23 
     | 
    
         
            -
            // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         
     | 
| 
       24 
     | 
    
         
            -
            // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         
     | 
| 
       25 
     | 
    
         
            -
            // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
         
     | 
| 
       26 
     | 
    
         
            -
            // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
         
     | 
| 
       27 
     | 
    
         
            -
            // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
       28 
     | 
    
         
            -
            // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         
     | 
| 
       29 
     | 
    
         
            -
            // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Use of this source code is governed by a BSD-style
         
     | 
| 
      
 5 
     | 
    
         
            +
            // license that can be found in the LICENSE file or at
         
     | 
| 
      
 6 
     | 
    
         
            +
            // https://developers.google.com/open-source/licenses/bsd
         
     | 
| 
       30 
7 
     | 
    
         | 
| 
       31 
8 
     | 
    
         
             
            #ifndef __GOOGLE_PROTOBUF_RUBY_PROTOBUF_H__
         
     | 
| 
       32 
9 
     | 
    
         
             
            #define __GOOGLE_PROTOBUF_RUBY_PROTOBUF_H__
         
     |