// Copyright 2008 Cyrus Najmabadi // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #import "GeneratedMessage_Builder.h" @protocol PBExtensionField; @class PBExtendableMessage_Builder; @class PBExtendableMessage; /** * Generated message builders for message types that contain extension ranges * subclass this. * *

This class implements type-safe accessors for extensions. They * implement all the same operations that you can do with normal fields -- * e.g. "get", "set", and "add" -- but for extensions. The extensions are * identified using instances of the class {@link GeneratedExtension}; the * protocol compiler generates a static instance of this class for every * extension in its input. Through the magic of generics, all is made * type-safe. * *

For example, imagine you have the {@code .proto} file: * *

 * option java_class = "MyProto";
 *
 * message Foo {
 *   extensions 1000 to max;
 * }
 *
 * extend Foo {
 *   optional int32 bar;
 * }
 * 
* *

Then you might write code like: * *

 * MyProto.Foo foo =
 *   MyProto.Foo.newBuilder()
 *     .setExtension(MyProto.bar, 123)
 *     .build();
 * 
* *

See also {@link ExtendableMessage}. */ @interface PBExtendableMessage_Builder : PBGeneratedMessage_Builder { } - (id) getExtension:(id) extension; - (BOOL) hasExtension:(id) extension; - (PBExtendableMessage_Builder*) setExtension:(id) extension value:(id) value; - (PBExtendableMessage_Builder*) addExtension:(id) extension value:(id) value; - (PBExtendableMessage_Builder*) setExtension:(id) extension index:(int32_t) index value:(id) value; - (PBExtendableMessage_Builder*) clearExtension:(id) extension; /* @protected */ - (void) mergeExtensionFields:(PBExtendableMessage*) other; @end