session-ios/Libraries/ProtocolBuffers/Message.h

71 lines
2.1 KiB
Objective-C

// 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.
@class PBUnknownFieldSet;
@class PBCodedOutputStream;
@protocol PBMessage_Builder;
/**
* Abstract interface implemented by Protocol Message objects.
*
* @author Cyrus Najmabadi
*/
@protocol PBMessage<NSObject>
/**
* Get an instance of the type with all fields set to their default values.
* This may or may not be a singleton. This differs from the
* {@code getDefaultInstance()} method of generated message classes in that
* this method is an abstract method of the {@code Message} interface
* whereas {@code getDefaultInstance()} is a static method of a specific
* class. They return the same thing.
*/
- (id<PBMessage>) defaultInstance;
/**
* Get the {@code UnknownFieldSet}
*/
- (PBUnknownFieldSet*) unknownFields;
/**
* Get the number of bytes required to encode this message. The result
* is only computed on the first call and memoized after that.
*/
- (int32_t) serializedSize;
/**
* Returns true if all required fields in the message and all embedded
* messages are set, false otherwise.
*/
- (BOOL) isInitialized;
/**
* Serializes the message and writes it to {@code output}. This does not
* flush or close the stream.
*/
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
- (void) writeToOutputStream:(NSOutputStream*) output;
/**
* Serializes the message to a {@code ByteString} and returns it. This is
* just a trivial wrapper around
* {@link #writeTo(CodedOutputStream)}.
*/
- (NSData*) data;
/**
* Constructs a new builder for a message of the same type as this message.
*/
- (id<PBMessage_Builder>) builder;
@end