1
1
# Protocol Buffers - Google's data interchange format
2
# Copyright 2008 Google Inc.
2
# Copyright 2008 Google Inc. All rights reserved.
3
3
# http://code.google.com/p/protobuf/
5
# Licensed under the Apache License, Version 2.0 (the "License");
6
# you may not use this file except in compliance with the License.
7
# You may obtain a copy of the License at
9
# http://www.apache.org/licenses/LICENSE-2.0
11
# Unless required by applicable law or agreed to in writing, software
12
# distributed under the License is distributed on an "AS IS" BASIS,
13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
# See the License for the specific language governing permissions and
15
# limitations under the License.
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions are
9
# * Redistributions of source code must retain the above copyright
10
# notice, this list of conditions and the following disclaimer.
11
# * Redistributions in binary form must reproduce the above
12
# copyright notice, this list of conditions and the following disclaimer
13
# in the documentation and/or other materials provided with the
15
# * Neither the name of Google Inc. nor the names of its
16
# contributors may be used to endorse or promote products derived from
17
# this software without specific prior written permission.
19
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17
31
# TODO(robinson): We should just make these methods all "pure-virtual" and move
18
32
# all implementation out, into reflection.py for now.
65
79
return text_format.MessageToString(self)
67
81
def MergeFrom(self, other_msg):
82
"""Merges the contents of the specified message into current message.
84
This method merges the contents of the specified message into the current
85
message. Singular fields that are set in the specified message overwrite
86
the corresponding fields in the current message. Repeated fields are
87
appended. Singular sub-messages and groups are recursively merged.
90
other_msg: Message to merge into the current message.
68
92
raise NotImplementedError
70
94
def CopyFrom(self, other_msg):
71
raise NotImplementedError
95
"""Copies the content of the specified message into the current message.
97
The method clears the current message and then merges the specified
98
message using MergeFrom.
101
other_msg: Message to copy into the current one.
103
if self == other_msg:
106
self.MergeFrom(other_msg)
109
"""Clears all data that was set in the message."""
74
110
raise NotImplementedError
76
112
def IsInitialized(self):
113
"""Checks if the message is initialized.
116
The method returns True if the message is initialized (i.e. all of its
117
required fields are set).
77
119
raise NotImplementedError
79
121
# TODO(robinson): MergeFromString() should probably return None and be
118
160
self.MergeFromString(serialized)
120
162
def SerializeToString(self):
163
"""Serializes the protocol message to a binary string.
166
A binary string representation of the message if all of the required
167
fields in the message are set (i.e. the message is initialized).
170
message.EncodeError if the message isn't initialized.
172
raise NotImplementedError
174
def SerializePartialToString(self):
175
"""Serializes the protocol message to a binary string.
177
This method is similar to SerializeToString but doesn't check if the
178
message is initialized.
181
A string representation of the partial message.
121
183
raise NotImplementedError
123
185
# TODO(robinson): Decide whether we like these better
136
198
# Typically (in python), an underscore is appended to names that are
137
199
# keywords. So they would become lambda_ or yield_.
139
def ListFields(self, field_name):
201
def ListFields(self):
140
202
"""Returns a list of (FieldDescriptor, value) tuples for all
141
203
fields in the message which are not empty. A singular field is non-empty
142
204
if HasField() would return true, and a repeated field is non-empty if