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