1// Go support for Protocol Buffers - Google's data interchange format 2// 3// Copyright 2010 The Go Authors. All rights reserved. 4// https://github.com/golang/protobuf 5// 6// Redistribution and use in source and binary forms, with or without 7// modification, are permitted provided that the following conditions are 8// met: 9// 10// * Redistributions of source code must retain the above copyright 11// notice, this list of conditions and the following disclaimer. 12// * Redistributions in binary form must reproduce the above 13// copyright notice, this list of conditions and the following disclaimer 14// in the documentation and/or other materials provided with the 15// distribution. 16// * Neither the name of Google Inc. nor the names of its 17// contributors may be used to endorse or promote products derived from 18// this software without specific prior written permission. 19// 20// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 32syntax = "proto2"; 33 34import "extension_base/extension_base.proto"; 35import "extension_extra/extension_extra.proto"; 36 37package extension_user; 38 39option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/extension_user"; 40 41message UserMessage { 42 optional string name = 1; 43 optional string rank = 2; 44} 45 46// Extend with a message 47extend extension_base.BaseMessage { 48 optional UserMessage user_message = 5; 49} 50 51// Extend with a foreign message 52extend extension_base.BaseMessage { 53 optional extension_extra.ExtraMessage extra_message = 9; 54} 55 56// Extend with some primitive types 57extend extension_base.BaseMessage { 58 optional int32 width = 6; 59 optional int64 area = 7; 60} 61 62// Extend inside the scope of another type 63message LoudMessage { 64 extend extension_base.BaseMessage { 65 optional uint32 volume = 8; 66 } 67 extensions 100 to max; 68} 69 70// Extend inside the scope of another type, using a message. 71message LoginMessage { 72 extend extension_base.BaseMessage { 73 optional UserMessage user_message = 16; 74 } 75} 76 77// Extend with a repeated field 78extend extension_base.BaseMessage { 79 repeated Detail detail = 17; 80} 81 82message Detail { 83 optional string color = 1; 84} 85 86// An extension of an extension 87message Announcement { 88 optional string words = 1; 89 extend LoudMessage { 90 optional Announcement loud_ext = 100; 91 } 92} 93 94// Something that can be put in a message set. 95message OldStyleParcel { 96 extend extension_base.OldStyleMessage { 97 optional OldStyleParcel message_set_extension = 2001; 98 } 99 100 required string name = 1; 101 optional int32 height = 2; 102} 103