protobuf
src
google
protobuf
util
internal
type_info.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_UTIL_CONVERTER_TYPE_INFO_H__
32
#define GOOGLE_PROTOBUF_UTIL_CONVERTER_TYPE_INFO_H__
33
34
#include <
google/protobuf/stubs/common.h
>
35
#include <
google/protobuf/type.pb.h
>
36
#include <
google/protobuf/util/type_resolver.h
>
37
#include <
google/protobuf/stubs/stringpiece.h
>
38
#include <
google/protobuf/stubs/status.h
>
39
#include <
google/protobuf/stubs/statusor.h
>
40
41
#include <google/protobuf/port_def.inc>
42
43
namespace
google
{
44
namespace
protobuf {
45
namespace
util {
46
namespace
converter {
47
// Internal helper class for type resolving. Note that this class is not
48
// thread-safe and should only be accessed in one thread.
49
class
PROTOBUF_EXPORT
TypeInfo
{
50
public
:
51
TypeInfo
() {}
52
virtual
~TypeInfo
() {}
53
54
// Resolves a type url into a Type. If the type url is invalid, returns
55
// INVALID_ARGUMENT error status. If the type url is valid but the
56
// corresponding type cannot be found, returns a NOT_FOUND error status.
57
//
58
// This TypeInfo class retains the ownership of the returned pointer.
59
virtual
util::StatusOr<const google::protobuf::Type*>
ResolveTypeUrl(
60
StringPiece
type_url
)
const
= 0;
61
62
// Resolves a type url into a Type. Like ResolveTypeUrl() but returns
63
// NULL if the type url is invalid or the type cannot be found.
64
//
65
// This TypeInfo class retains the ownership of the returned pointer.
66
virtual
const
google::protobuf::Type
* GetTypeByTypeUrl(
67
StringPiece
type_url
)
const
= 0;
68
69
// Resolves a type url for an enum. Returns NULL if the type url is
70
// invalid or the type cannot be found.
71
//
72
// This TypeInfo class retains the ownership of the returned pointer.
73
virtual
const
google::protobuf::Enum
* GetEnumByTypeUrl(
74
StringPiece
type_url
)
const
= 0;
75
76
// Looks up a field in the specified type given a CamelCase name.
77
virtual
const
google::protobuf::Field
* FindField(
78
const
google::protobuf::Type
*
type
,
79
StringPiece
camel_case_name)
const
= 0;
80
81
// Creates a TypeInfo object that looks up type information from a
82
// TypeResolver. Caller takes ownership of the returned pointer.
83
static
TypeInfo
* NewTypeInfo(
TypeResolver
*
type_resolver
);
84
85
private
:
86
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS
(
TypeInfo
);
87
};
88
89
}
// namespace converter
90
}
// namespace util
91
}
// namespace protobuf
92
}
// namespace google
93
94
#include <google/protobuf/port_undef.inc>
95
96
#endif // GOOGLE_PROTOBUF_UTIL_CONVERTER_TYPE_INFO_H__
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS
#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName)
Definition:
macros.h:40
google::protobuf::Enum
statusor.h
type_resolver.h
stringpiece.h
google::protobuf::util::TypeResolver
Definition:
type_resolver.h:52
google::protobuf::StringPiece
Definition:
stringpiece.h:180
google::protobuf::util::converter::TypeInfo
Definition:
type_info.h:49
google::protobuf::util::converter::TypeInfo::~TypeInfo
virtual ~TypeInfo()
Definition:
type_info.h:52
google::protobuf::util::StatusOr
Definition:
statusor.h:99
Field
struct Field Field
Definition:
php/ext/google/protobuf/protobuf.h:638
type
GLenum type
Definition:
glcorearb.h:2695
common.h
google::protobuf::util::converter::TypeInfo::TypeInfo
TypeInfo()
Definition:
type_info.h:51
type_resolver
TypeResolver * type_resolver
Definition:
conformance_cpp.cc:97
type.pb.h
Type
struct Type Type
Definition:
php/ext/google/protobuf/protobuf.h:664
type_url
string * type_url
Definition:
conformance_cpp.cc:98
status.h
google
Definition:
data_proto2_to_proto3_util.h:11
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:07:00