grpc
third_party
protobuf
python
google
protobuf
pyext
protobuf/python/google/protobuf/pyext/map_container.h
Go to the documentation of this file.
1
// Protocol Buffers - Google's data interchange format
2
// Copyright 2008 Google Inc. All rights reserved.
3
// https://developers.google.com/protocol-buffers/
4
//
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions are
7
// met:
8
//
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
14
// distribution.
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.
18
//
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.
30
31
#ifndef GOOGLE_PROTOBUF_PYTHON_CPP_MAP_CONTAINER_H__
32
#define GOOGLE_PROTOBUF_PYTHON_CPP_MAP_CONTAINER_H__
33
34
#define PY_SSIZE_T_CLEAN
35
#include <Python.h>
36
37
#include <cstdint>
38
#include <memory>
39
40
#include <google/protobuf/descriptor.h>
41
#include <google/protobuf/message.h>
42
#include <google/protobuf/pyext/message.h>
43
44
namespace
google
{
45
namespace
protobuf
{
46
47
class
Message
;
48
49
namespace
python {
50
51
struct
CMessageClass;
52
53
// This struct is used directly for ScalarMap, and is the base class of
54
// MessageMapContainer, which is used for MessageMap.
55
struct
MapContainer :
public
ContainerBase {
56
// Use to get a mutable message when necessary.
57
Message
*
GetMutableMessage
();
58
59
// We bump this whenever we perform a mutation, to invalidate existing
60
// iterators.
61
uint64_t
version
;
62
};
63
64
struct
MessageMapContainer
:
public
MapContainer
{
65
// The type used to create new child messages.
66
CMessageClass
*
message_class
;
67
};
68
69
bool
InitMapContainers
();
70
71
extern
PyTypeObject*
MessageMapContainer_Type
;
72
extern
PyTypeObject*
ScalarMapContainer_Type
;
73
extern
PyTypeObject
MapIterator_Type
;
// Both map types use the same iterator.
74
75
// Builds a MapContainer object, from a parent message and a
76
// field descriptor.
77
extern
MapContainer*
NewScalarMapContainer
(
78
CMessage
* parent,
const
FieldDescriptor
* parent_field_descriptor);
79
80
// Builds a MessageMap object, from a parent message and a
81
// field descriptor.
82
extern
MessageMapContainer*
NewMessageMapContainer
(
83
CMessage
* parent,
const
FieldDescriptor
* parent_field_descriptor,
84
CMessageClass* message_class);
85
86
}
// namespace python
87
}
// namespace protobuf
88
}
// namespace google
89
90
#endif // GOOGLE_PROTOBUF_PYTHON_CPP_MAP_CONTAINER_H__
google::protobuf::python::InitMapContainers
bool InitMapContainers()
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.cc:1019
google::protobuf::FieldDescriptor
Definition:
bloaty/third_party/protobuf/src/google/protobuf/descriptor.h:515
google::protobuf::python::MapContainer::GetMutableMessage
Message * GetMutableMessage()
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.cc:105
google::protobuf::python::MessageMapContainer::message_class
CMessageClass * message_class
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.h:67
google::protobuf::python::MapContainer
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.h:53
google::protobuf::python::NewScalarMapContainer
MapContainer * NewScalarMapContainer(CMessage *parent, const google::protobuf::FieldDescriptor *parent_field_descriptor)
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.cc:374
google::protobuf
Definition:
bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
google::protobuf::python::CMessageClass
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/message.h:148
google::protobuf::python::MapContainer::version
uint64_t version
Definition:
protobuf/python/google/protobuf/pyext/map_container.h:61
google::protobuf::python::MapIterator_Type
PyTypeObject MapIterator_Type
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.cc:980
google::protobuf::python::MessageMapContainer_Type
PyTypeObject * MessageMapContainer_Type
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.cc:838
uint64_t
unsigned __int64 uint64_t
Definition:
stdint-msvc2008.h:90
google::protobuf::python::NewMessageMapContainer
MessageMapContainer * NewMessageMapContainer(CMessage *parent, const google::protobuf::FieldDescriptor *parent_field_descriptor, CMessageClass *message_class)
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.cc:638
google::protobuf::python::CMessage
google::protobuf::python::CMessage CMessage
google::protobuf::python::MessageMapContainer
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.h:65
google
Definition:
bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
google::protobuf::python::ScalarMapContainer_Type
PyTypeObject * ScalarMapContainer_Type
Definition:
bloaty/third_party/protobuf/python/google/protobuf/pyext/map_container.cc:556
Message
Definition:
protobuf/php/ext/google/protobuf/message.c:53
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:18