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
#include <Python.h>
35
36
#include <memory>
37
38
#include <
google/protobuf/descriptor.h
>
39
#include <
google/protobuf/message.h
>
40
#include <
google/protobuf/pyext/message.h
>
41
42
namespace
google
{
43
namespace
protobuf {
44
45
class
Message;
46
47
namespace
python {
48
49
struct
CMessageClass;
50
51
// This struct is used directly for ScalarMap, and is the base class of
52
// MessageMapContainer, which is used for MessageMap.
53
struct
MapContainer
:
public
ContainerBase
{
54
// Use to get a mutable message when necessary.
55
Message
*
GetMutableMessage
();
56
57
// Cache some descriptors, used to convert keys and values.
58
const
FieldDescriptor
*
key_field_descriptor
;
59
const
FieldDescriptor
*
value_field_descriptor
;
60
// We bump this whenever we perform a mutation, to invalidate existing
61
// iterators.
62
uint64
version
;
63
};
64
65
struct
MessageMapContainer
:
public
MapContainer
{
66
// The type used to create new child messages.
67
CMessageClass
*
message_class
;
68
};
69
70
bool
InitMapContainers
();
71
72
extern
PyTypeObject*
MessageMapContainer_Type
;
73
extern
PyTypeObject*
ScalarMapContainer_Type
;
74
extern
PyTypeObject
MapIterator_Type
;
// Both map types use the same iterator.
75
76
// Builds a MapContainer object, from a parent message and a
77
// field descriptor.
78
extern
MapContainer
*
NewScalarMapContainer
(
79
CMessage
* parent,
const
FieldDescriptor
* parent_field_descriptor);
80
81
// Builds a MessageMap object, from a parent message and a
82
// field descriptor.
83
extern
MessageMapContainer
*
NewMessageMapContainer
(
84
CMessage
* parent,
const
FieldDescriptor
* parent_field_descriptor,
85
CMessageClass
* message_class);
86
87
}
// namespace python
88
}
// namespace protobuf
89
}
// namespace google
90
91
#endif // GOOGLE_PROTOBUF_PYTHON_CPP_MAP_CONTAINER_H__
google::protobuf::python::InitMapContainers
bool InitMapContainers()
Definition:
map_container.cc:1020
google::protobuf::FieldDescriptor
Definition:
src/google/protobuf/descriptor.h:515
google::protobuf::python::MapContainer::GetMutableMessage
Message * GetMutableMessage()
Definition:
map_container.cc:105
google::protobuf::python::MapContainer
Definition:
map_container.h:53
google::protobuf::python::CMessage
Definition:
python/google/protobuf/pyext/message.h:100
google::protobuf::python::NewScalarMapContainer
MapContainer * NewScalarMapContainer(CMessage *parent, const google::protobuf::FieldDescriptor *parent_field_descriptor)
Definition:
map_container.cc:375
google::protobuf::python::MapContainer::key_field_descriptor
const FieldDescriptor * key_field_descriptor
Definition:
map_container.h:58
google::protobuf::python::CMessageClass
Definition:
python/google/protobuf/pyext/message.h:148
google::protobuf::python::MapIterator_Type
PyTypeObject MapIterator_Type
Definition:
map_container.cc:981
google::protobuf::python::ContainerBase
Definition:
python/google/protobuf/pyext/message.h:71
google::protobuf::python::MessageMapContainer_Type
PyTypeObject * MessageMapContainer_Type
Definition:
map_container.cc:839
message.h
google::protobuf::python::MapContainer::value_field_descriptor
const FieldDescriptor * value_field_descriptor
Definition:
map_container.h:59
google::protobuf::python::NewMessageMapContainer
MessageMapContainer * NewMessageMapContainer(CMessage *parent, const google::protobuf::FieldDescriptor *parent_field_descriptor, CMessageClass *message_class)
Definition:
map_container.cc:639
google::protobuf::uint64
uint64_t uint64
Definition:
protobuf/src/google/protobuf/stubs/port.h:156
google::protobuf::python::MapContainer::version
uint64 version
Definition:
map_container.h:62
google::protobuf::Message
Definition:
src/google/protobuf/message.h:205
descriptor.h
message.h
google::protobuf::python::MessageMapContainer::message_class
CMessageClass * message_class
Definition:
map_container.h:67
google::protobuf::python::MessageMapContainer
Definition:
map_container.h:65
google
Definition:
data_proto2_to_proto3_util.h:11
google::protobuf::python::ScalarMapContainer_Type
PyTypeObject * ScalarMapContainer_Type
Definition:
map_container.cc:557
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:56