Skip to content

Commit 6de2eca

Browse files
authored
Merge pull request #2 from lizan/type_helper_init
TypeHelper to be initialized with existing Resolver
2 parents 776f4e0 + 78b0a20 commit 6de2eca

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/type_helper.cc

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ class SimpleTypeResolver : public pbutil::TypeResolver {
107107
SimpleTypeResolver& operator=(const SimpleTypeResolver&) = delete;
108108
};
109109

110+
TypeHelper::TypeHelper(pbutil::TypeResolver* type_resolver)
111+
: type_resolver_(type_resolver),
112+
type_info_(pbconv::TypeInfo::NewTypeInfo(type_resolver)) {}
113+
110114
TypeHelper::~TypeHelper() {
111115
type_info_.reset();
112116
delete type_resolver_;
@@ -121,9 +125,13 @@ void TypeHelper::Initialize() {
121125
type_info_.reset(pbconv::TypeInfo::NewTypeInfo(type_resolver_));
122126
}
123127

124-
void TypeHelper::AddType(const pb::Type& t) { type_resolver_->AddType(t); }
128+
void TypeHelper::AddType(const pb::Type& t) {
129+
reinterpret_cast<SimpleTypeResolver*>(type_resolver_)->AddType(t);
130+
}
125131

126-
void TypeHelper::AddEnum(const pb::Enum& e) { type_resolver_->AddEnum(e); }
132+
void TypeHelper::AddEnum(const pb::Enum& e) {
133+
reinterpret_cast<SimpleTypeResolver*>(type_resolver_)->AddEnum(e);
134+
}
127135

128136
pbutil::Status TypeHelper::ResolveFieldPath(
129137
const pb::Type& type, const std::string& field_path_str,

src/type_helper.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ class TypeHelper {
3636
public:
3737
template <typename Types, typename Enums>
3838
TypeHelper(const Types& types, const Enums& enums);
39+
40+
TypeHelper(::google::protobuf::util::TypeResolver* type_resolver);
41+
3942
~TypeHelper();
4043

4144
::google::protobuf::util::TypeResolver* Resolver() const;
@@ -77,7 +80,7 @@ class TypeHelper {
7780
// unique_ptr requires the type to be defined when the unique_ptr destructor
7881
// is called. In our case it's called from the template constructor below
7982
// (most likely as a part of stack unwinding when an exception occurs).
80-
SimpleTypeResolver* type_resolver_;
83+
::google::protobuf::util::TypeResolver* type_resolver_;
8184
std::unique_ptr<::google::protobuf::util::converter::TypeInfo> type_info_;
8285

8386
TypeHelper() = delete;

0 commit comments

Comments
 (0)