xref: /aosp_15_r20/external/protobuf/ruby/lib/google/protobuf.rb (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker# Protocol Buffers - Google's data interchange format
2*1b3f573fSAndroid Build Coastguard Worker# Copyright 2008 Google Inc.  All rights reserved.
3*1b3f573fSAndroid Build Coastguard Worker# https://developers.google.com/protocol-buffers/
4*1b3f573fSAndroid Build Coastguard Worker#
5*1b3f573fSAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without
6*1b3f573fSAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are
7*1b3f573fSAndroid Build Coastguard Worker# met:
8*1b3f573fSAndroid Build Coastguard Worker#
9*1b3f573fSAndroid Build Coastguard Worker#     * Redistributions of source code must retain the above copyright
10*1b3f573fSAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer.
11*1b3f573fSAndroid Build Coastguard Worker#     * Redistributions in binary form must reproduce the above
12*1b3f573fSAndroid Build Coastguard Worker# copyright notice, this list of conditions and the following disclaimer
13*1b3f573fSAndroid Build Coastguard Worker# in the documentation and/or other materials provided with the
14*1b3f573fSAndroid Build Coastguard Worker# distribution.
15*1b3f573fSAndroid Build Coastguard Worker#     * Neither the name of Google Inc. nor the names of its
16*1b3f573fSAndroid Build Coastguard Worker# contributors may be used to endorse or promote products derived from
17*1b3f573fSAndroid Build Coastguard Worker# this software without specific prior written permission.
18*1b3f573fSAndroid Build Coastguard Worker#
19*1b3f573fSAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20*1b3f573fSAndroid Build Coastguard Worker# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21*1b3f573fSAndroid Build Coastguard Worker# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22*1b3f573fSAndroid Build Coastguard Worker# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23*1b3f573fSAndroid Build Coastguard Worker# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24*1b3f573fSAndroid Build Coastguard Worker# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25*1b3f573fSAndroid Build Coastguard Worker# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26*1b3f573fSAndroid Build Coastguard Worker# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27*1b3f573fSAndroid Build Coastguard Worker# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28*1b3f573fSAndroid Build Coastguard Worker# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29*1b3f573fSAndroid Build Coastguard Worker# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30*1b3f573fSAndroid Build Coastguard Worker
31*1b3f573fSAndroid Build Coastguard Worker# require mixins before we hook them into the java & c code
32*1b3f573fSAndroid Build Coastguard Workerrequire 'google/protobuf/message_exts'
33*1b3f573fSAndroid Build Coastguard Worker
34*1b3f573fSAndroid Build Coastguard Worker# We define these before requiring the platform-specific modules.
35*1b3f573fSAndroid Build Coastguard Worker# That way the module init can grab references to these.
36*1b3f573fSAndroid Build Coastguard Workermodule Google
37*1b3f573fSAndroid Build Coastguard Worker  module Protobuf
38*1b3f573fSAndroid Build Coastguard Worker    class Error < StandardError; end
39*1b3f573fSAndroid Build Coastguard Worker    class ParseError < Error; end
40*1b3f573fSAndroid Build Coastguard Worker    class TypeError < ::TypeError; end
41*1b3f573fSAndroid Build Coastguard Worker  end
42*1b3f573fSAndroid Build Coastguard Workerend
43*1b3f573fSAndroid Build Coastguard Worker
44*1b3f573fSAndroid Build Coastguard Workerif RUBY_PLATFORM == "java"
45*1b3f573fSAndroid Build Coastguard Worker  require 'json'
46*1b3f573fSAndroid Build Coastguard Worker  require 'google/protobuf_java'
47*1b3f573fSAndroid Build Coastguard Workerelse
48*1b3f573fSAndroid Build Coastguard Worker  begin
49*1b3f573fSAndroid Build Coastguard Worker    require "google/#{RUBY_VERSION.sub(/\.\d+$/, '')}/protobuf_c"
50*1b3f573fSAndroid Build Coastguard Worker  rescue LoadError
51*1b3f573fSAndroid Build Coastguard Worker    require 'google/protobuf_c'
52*1b3f573fSAndroid Build Coastguard Worker  end
53*1b3f573fSAndroid Build Coastguard Worker
54*1b3f573fSAndroid Build Coastguard Workerend
55*1b3f573fSAndroid Build Coastguard Worker
56*1b3f573fSAndroid Build Coastguard Workerrequire 'google/protobuf/descriptor_dsl'
57*1b3f573fSAndroid Build Coastguard Workerrequire 'google/protobuf/repeated_field'
58*1b3f573fSAndroid Build Coastguard Worker
59*1b3f573fSAndroid Build Coastguard Workermodule Google
60*1b3f573fSAndroid Build Coastguard Worker  module Protobuf
61*1b3f573fSAndroid Build Coastguard Worker
62*1b3f573fSAndroid Build Coastguard Worker    def self.encode(msg, options = {})
63*1b3f573fSAndroid Build Coastguard Worker      msg.to_proto(options)
64*1b3f573fSAndroid Build Coastguard Worker    end
65*1b3f573fSAndroid Build Coastguard Worker
66*1b3f573fSAndroid Build Coastguard Worker    def self.encode_json(msg, options = {})
67*1b3f573fSAndroid Build Coastguard Worker      msg.to_json(options)
68*1b3f573fSAndroid Build Coastguard Worker    end
69*1b3f573fSAndroid Build Coastguard Worker
70*1b3f573fSAndroid Build Coastguard Worker    def self.decode(klass, proto, options = {})
71*1b3f573fSAndroid Build Coastguard Worker      klass.decode(proto, options)
72*1b3f573fSAndroid Build Coastguard Worker    end
73*1b3f573fSAndroid Build Coastguard Worker
74*1b3f573fSAndroid Build Coastguard Worker    def self.decode_json(klass, json, options = {})
75*1b3f573fSAndroid Build Coastguard Worker      klass.decode_json(json, options)
76*1b3f573fSAndroid Build Coastguard Worker    end
77*1b3f573fSAndroid Build Coastguard Worker
78*1b3f573fSAndroid Build Coastguard Worker  end
79*1b3f573fSAndroid Build Coastguard Workerend
80