• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc.  All rights reserved.
3 //
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd
7 
8 #ifndef GOOGLE_PROTOBUF_PYTHON_CPP_DESCRIPTOR_CONTAINERS_H__
9 #define GOOGLE_PROTOBUF_PYTHON_CPP_DESCRIPTOR_CONTAINERS_H__
10 
11 // Mappings and Sequences of descriptors.
12 // They implement containers like fields_by_name, EnumDescriptor.values...
13 // See descriptor_containers.cc for more description.
14 #define PY_SSIZE_T_CLEAN
15 #include <Python.h>
16 
17 namespace google {
18 namespace protobuf {
19 
20 class Descriptor;
21 class FileDescriptor;
22 class EnumDescriptor;
23 class OneofDescriptor;
24 class ServiceDescriptor;
25 
26 namespace python {
27 
28 // Initialize the various types and objects.
29 bool InitDescriptorMappingTypes();
30 
31 // Each function below returns a Mapping, or a Sequence of descriptors.
32 // They all return a new reference.
33 
34 namespace message_descriptor {
35 PyObject* NewMessageFieldsByName(const Descriptor* descriptor);
36 PyObject* NewMessageFieldsByCamelcaseName(const Descriptor* descriptor);
37 PyObject* NewMessageFieldsByNumber(const Descriptor* descriptor);
38 PyObject* NewMessageFieldsSeq(const Descriptor* descriptor);
39 
40 PyObject* NewMessageNestedTypesSeq(const Descriptor* descriptor);
41 PyObject* NewMessageNestedTypesByName(const Descriptor* descriptor);
42 
43 PyObject* NewMessageEnumsByName(const Descriptor* descriptor);
44 PyObject* NewMessageEnumsSeq(const Descriptor* descriptor);
45 PyObject* NewMessageEnumValuesByName(const Descriptor* descriptor);
46 
47 PyObject* NewMessageExtensionsByName(const Descriptor* descriptor);
48 PyObject* NewMessageExtensionsSeq(const Descriptor* descriptor);
49 
50 PyObject* NewMessageOneofsByName(const Descriptor* descriptor);
51 PyObject* NewMessageOneofsSeq(const Descriptor* descriptor);
52 }  // namespace message_descriptor
53 
54 namespace enum_descriptor {
55 PyObject* NewEnumValuesByName(const EnumDescriptor* descriptor);
56 PyObject* NewEnumValuesByNumber(const EnumDescriptor* descriptor);
57 PyObject* NewEnumValuesSeq(const EnumDescriptor* descriptor);
58 }  // namespace enum_descriptor
59 
60 namespace oneof_descriptor {
61 PyObject* NewOneofFieldsSeq(const OneofDescriptor* descriptor);
62 }  // namespace oneof_descriptor
63 
64 namespace file_descriptor {
65 PyObject* NewFileMessageTypesByName(const FileDescriptor* descriptor);
66 
67 PyObject* NewFileEnumTypesByName(const FileDescriptor* descriptor);
68 
69 PyObject* NewFileExtensionsByName(const FileDescriptor* descriptor);
70 
71 PyObject* NewFileServicesByName(const FileDescriptor* descriptor);
72 
73 PyObject* NewFileDependencies(const FileDescriptor* descriptor);
74 PyObject* NewFilePublicDependencies(const FileDescriptor* descriptor);
75 }  // namespace file_descriptor
76 
77 namespace service_descriptor {
78 PyObject* NewServiceMethodsSeq(const ServiceDescriptor* descriptor);
79 PyObject* NewServiceMethodsByName(const ServiceDescriptor* descriptor);
80 }  // namespace service_descriptor
81 
82 
83 }  // namespace python
84 }  // namespace protobuf
85 }  // namespace google
86 
87 #endif  // GOOGLE_PROTOBUF_PYTHON_CPP_DESCRIPTOR_CONTAINERS_H__
88