Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
protobuf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
protobuf
Commits
98f0447a
Unverified
Commit
98f0447a
authored
Jun 18, 2019
by
Joshua Haberman
Committed by
GitHub
Jun 18, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6274 from haberman/objc
Removed all use of STLDelete*() in ObjC and C# Generators.
parents
43307d4d
f98b3401
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
83 additions
and
147 deletions
+83
-147
csharp_bootstrap_unittest.cc
...gle/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc
+8
-14
objectivec_file.cc
src/google/protobuf/compiler/objectivec/objectivec_file.cc
+24
-43
objectivec_file.h
src/google/protobuf/compiler/objectivec/objectivec_file.h
+3
-3
objectivec_message.cc
...google/protobuf/compiler/objectivec/objectivec_message.cc
+44
-83
objectivec_message.h
src/google/protobuf/compiler/objectivec/objectivec_message.h
+4
-4
No files found.
src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc
View file @
98f0447a
...
@@ -77,23 +77,19 @@ class MockErrorCollector : public MultiFileErrorCollector {
...
@@ -77,23 +77,19 @@ class MockErrorCollector : public MultiFileErrorCollector {
class
MockGeneratorContext
:
public
GeneratorContext
{
class
MockGeneratorContext
:
public
GeneratorContext
{
public
:
public
:
MockGeneratorContext
()
{}
~
MockGeneratorContext
()
{
STLDeleteValues
(
&
files_
);
}
void
ExpectFileMatches
(
const
string
&
virtual_filename
,
void
ExpectFileMatches
(
const
string
&
virtual_filename
,
const
string
&
physical_filename
)
{
const
string
&
physical_filename
)
{
string
*
expected_contents
=
FindPtrOrNull
(
files_
,
virtual_filename
);
auto
it
=
files_
.
find
(
virtual_filename
);
ASSERT_TRUE
(
expected_contents
!=
NULL
)
ASSERT_TRUE
(
it
!=
files_
.
end
()
)
<<
"Generator failed to generate file: "
<<
virtual_filename
;
<<
"Generator failed to generate file: "
<<
virtual_filename
;
string
expected_contents
=
*
it
->
second
;
string
actual_contents
;
string
actual_contents
;
GOOGLE_CHECK_OK
(
GOOGLE_CHECK_OK
(
File
::
GetContentsAsText
(
TestSourceDir
()
+
"/"
+
physical_filename
,
File
::
GetContentsAsText
(
TestSourceDir
()
+
"/"
+
physical_filename
,
&
actual_contents
,
true
))
&
actual_contents
,
true
))
<<
"Unable to get "
<<
physical_filename
;
<<
"Unable to get "
<<
physical_filename
;
EXPECT_TRUE
(
actual_contents
==
*
expected_contents
)
EXPECT_TRUE
(
actual_contents
==
expected_contents
)
<<
physical_filename
<<
" needs to be regenerated. Please run "
<<
physical_filename
<<
" needs to be regenerated. Please run "
"generate_descriptor_proto.sh. Then add this file "
"generate_descriptor_proto.sh. Then add this file "
"to your CL."
;
"to your CL."
;
...
@@ -102,15 +98,13 @@ class MockGeneratorContext : public GeneratorContext {
...
@@ -102,15 +98,13 @@ class MockGeneratorContext : public GeneratorContext {
// implements GeneratorContext --------------------------------------
// implements GeneratorContext --------------------------------------
virtual
io
::
ZeroCopyOutputStream
*
Open
(
const
string
&
filename
)
{
virtual
io
::
ZeroCopyOutputStream
*
Open
(
const
string
&
filename
)
{
string
**
map_slot
=
&
files_
[
filename
];
auto
&
map_slot
=
files_
[
filename
];
delete
*
map_slot
;
map_slot
.
reset
(
new
std
::
string
);
*
map_slot
=
new
string
;
return
new
io
::
StringOutputStream
(
map_slot
.
get
());
return
new
io
::
StringOutputStream
(
*
map_slot
);
}
}
private
:
private
:
std
::
map
<
st
ring
,
string
*
>
files_
;
std
::
map
<
st
d
::
string
,
std
::
unique_ptr
<
std
::
string
>
>
files_
;
};
};
class
GenerateAndTest
{
class
GenerateAndTest
{
...
...
src/google/protobuf/compiler/objectivec/objectivec_file.cc
View file @
98f0447a
...
@@ -192,27 +192,21 @@ FileGenerator::FileGenerator(const FileDescriptor *file, const Options& options)
...
@@ -192,27 +192,21 @@ FileGenerator::FileGenerator(const FileDescriptor *file, const Options& options)
options_
(
options
)
{
options_
(
options
)
{
for
(
int
i
=
0
;
i
<
file_
->
enum_type_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
file_
->
enum_type_count
();
i
++
)
{
EnumGenerator
*
generator
=
new
EnumGenerator
(
file_
->
enum_type
(
i
));
EnumGenerator
*
generator
=
new
EnumGenerator
(
file_
->
enum_type
(
i
));
enum_generators_
.
push
_back
(
generator
);
enum_generators_
.
emplace
_back
(
generator
);
}
}
for
(
int
i
=
0
;
i
<
file_
->
message_type_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
file_
->
message_type_count
();
i
++
)
{
MessageGenerator
*
generator
=
MessageGenerator
*
generator
=
new
MessageGenerator
(
root_class_name_
,
file_
->
message_type
(
i
),
options_
);
new
MessageGenerator
(
root_class_name_
,
file_
->
message_type
(
i
),
options_
);
message_generators_
.
push
_back
(
generator
);
message_generators_
.
emplace
_back
(
generator
);
}
}
for
(
int
i
=
0
;
i
<
file_
->
extension_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
file_
->
extension_count
();
i
++
)
{
ExtensionGenerator
*
generator
=
ExtensionGenerator
*
generator
=
new
ExtensionGenerator
(
root_class_name_
,
file_
->
extension
(
i
));
new
ExtensionGenerator
(
root_class_name_
,
file_
->
extension
(
i
));
extension_generators_
.
push
_back
(
generator
);
extension_generators_
.
emplace
_back
(
generator
);
}
}
}
}
FileGenerator
::~
FileGenerator
()
{
FileGenerator
::~
FileGenerator
()
{}
STLDeleteContainerPointers
(
enum_generators_
.
begin
(),
enum_generators_
.
end
());
STLDeleteContainerPointers
(
message_generators_
.
begin
(),
message_generators_
.
end
());
STLDeleteContainerPointers
(
extension_generators_
.
begin
(),
extension_generators_
.
end
());
}
void
FileGenerator
::
GenerateHeader
(
io
::
Printer
*
printer
)
{
void
FileGenerator
::
GenerateHeader
(
io
::
Printer
*
printer
)
{
std
::
set
<
string
>
headers
;
std
::
set
<
string
>
headers
;
...
@@ -270,9 +264,8 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
...
@@ -270,9 +264,8 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
"
\n
"
);
"
\n
"
);
std
::
set
<
string
>
fwd_decls
;
std
::
set
<
string
>
fwd_decls
;
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
message_generators_
.
begin
();
for
(
const
auto
&
generator
:
message_generators_
)
{
iter
!=
message_generators_
.
end
();
++
iter
)
{
generator
->
DetermineForwardDeclarations
(
&
fwd_decls
);
(
*
iter
)
->
DetermineForwardDeclarations
(
&
fwd_decls
);
}
}
for
(
std
::
set
<
string
>::
const_iterator
i
(
fwd_decls
.
begin
());
for
(
std
::
set
<
string
>::
const_iterator
i
(
fwd_decls
.
begin
());
i
!=
fwd_decls
.
end
();
++
i
)
{
i
!=
fwd_decls
.
end
();
++
i
)
{
...
@@ -287,14 +280,12 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
...
@@ -287,14 +280,12 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
"
\n
"
);
"
\n
"
);
// need to write out all enums first
// need to write out all enums first
for
(
std
::
vector
<
EnumGenerator
*>::
iterator
iter
=
enum_generators_
.
begin
();
for
(
const
auto
&
generator
:
enum_generators_
)
{
iter
!=
enum_generators_
.
end
();
++
iter
)
{
generator
->
GenerateHeader
(
printer
);
(
*
iter
)
->
GenerateHeader
(
printer
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
message_generators_
.
begin
();
for
(
const
auto
&
generator
:
message_generators_
)
{
iter
!=
message_generators_
.
end
();
++
iter
)
{
generator
->
GenerateEnumHeader
(
printer
);
(
*
iter
)
->
GenerateEnumHeader
(
printer
);
}
}
// For extensions to chain together, the Root gets created even if there
// For extensions to chain together, the Root gets created even if there
...
@@ -323,18 +314,15 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
...
@@ -323,18 +314,15 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
"@interface $root_class_name$ (DynamicMethods)
\n
"
,
"@interface $root_class_name$ (DynamicMethods)
\n
"
,
"root_class_name"
,
root_class_name_
);
"root_class_name"
,
root_class_name_
);
for
(
std
::
vector
<
ExtensionGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
extension_generators_
)
{
extension_generators_
.
begin
();
generator
->
GenerateMembersHeader
(
printer
);
iter
!=
extension_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateMembersHeader
(
printer
);
}
}
printer
->
Print
(
"@end
\n\n
"
);
printer
->
Print
(
"@end
\n\n
"
);
}
// extension_generators_.size() > 0
}
// extension_generators_.size() > 0
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
message_generators_
.
begin
();
for
(
const
auto
&
generator
:
message_generators_
)
{
iter
!=
message_generators_
.
end
();
++
iter
)
{
generator
->
GenerateMessageHeader
(
printer
);
(
*
iter
)
->
GenerateMessageHeader
(
printer
);
}
}
printer
->
Print
(
printer
->
Print
(
...
@@ -403,9 +391,8 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
...
@@ -403,9 +391,8 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
}
}
bool
includes_oneof
=
false
;
bool
includes_oneof
=
false
;
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
message_generators_
.
begin
();
for
(
const
auto
&
generator
:
message_generators_
)
{
iter
!=
message_generators_
.
end
();
++
iter
)
{
if
(
generator
->
IncludesOneOfDefinition
())
{
if
((
*
iter
)
->
IncludesOneOfDefinition
())
{
includes_oneof
=
true
;
includes_oneof
=
true
;
break
;
break
;
}
}
...
@@ -456,15 +443,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
...
@@ -456,15 +443,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
printer
->
Print
(
printer
->
Print
(
"static GPBExtensionDescription descriptions[] = {
\n
"
);
"static GPBExtensionDescription descriptions[] = {
\n
"
);
printer
->
Indent
();
printer
->
Indent
();
for
(
std
::
vector
<
ExtensionGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
extension_generators_
)
{
extension_generators_
.
begin
();
generator
->
GenerateStaticVariablesInitialization
(
printer
);
iter
!=
extension_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateStaticVariablesInitialization
(
printer
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
message_generators_
)
{
message_generators_
.
begin
();
generator
->
GenerateStaticVariablesInitialization
(
printer
);
iter
!=
message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateStaticVariablesInitialization
(
printer
);
}
}
printer
->
Outdent
();
printer
->
Outdent
();
printer
->
Print
(
printer
->
Print
(
...
@@ -561,13 +544,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
...
@@ -561,13 +544,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
"
\n
"
);
"
\n
"
);
}
}
for
(
std
::
vector
<
EnumGenerator
*>::
iterator
iter
=
enum_generators_
.
begin
();
for
(
const
auto
&
generator
:
enum_generators_
)
{
iter
!=
enum_generators_
.
end
();
++
iter
)
{
generator
->
GenerateSource
(
printer
);
(
*
iter
)
->
GenerateSource
(
printer
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
message_generators_
.
begin
();
for
(
const
auto
&
generator
:
message_generators_
)
{
iter
!=
message_generators_
.
end
();
++
iter
)
{
generator
->
GenerateSource
(
printer
);
(
*
iter
)
->
GenerateSource
(
printer
);
}
}
printer
->
Print
(
printer
->
Print
(
...
...
src/google/protobuf/compiler/objectivec/objectivec_file.h
View file @
98f0447a
...
@@ -65,9 +65,9 @@ class FileGenerator {
...
@@ -65,9 +65,9 @@ class FileGenerator {
string
root_class_name_
;
string
root_class_name_
;
bool
is_bundled_proto_
;
bool
is_bundled_proto_
;
std
::
vector
<
EnumGenerator
*
>
enum_generators_
;
std
::
vector
<
std
::
unique_ptr
<
EnumGenerator
>
>
enum_generators_
;
std
::
vector
<
MessageGenerator
*
>
message_generators_
;
std
::
vector
<
std
::
unique_ptr
<
MessageGenerator
>
>
message_generators_
;
std
::
vector
<
ExtensionGenerator
*
>
extension_generators_
;
std
::
vector
<
std
::
unique_ptr
<
ExtensionGenerator
>
>
extension_generators_
;
const
Options
options_
;
const
Options
options_
;
...
...
src/google/protobuf/compiler/objectivec/objectivec_message.cc
View file @
98f0447a
...
@@ -184,18 +184,18 @@ MessageGenerator::MessageGenerator(const string& root_classname,
...
@@ -184,18 +184,18 @@ MessageGenerator::MessageGenerator(const string& root_classname,
GetOptionalDeprecatedAttribute
(
descriptor
,
descriptor
->
file
(),
false
,
true
))
{
GetOptionalDeprecatedAttribute
(
descriptor
,
descriptor
->
file
(),
false
,
true
))
{
for
(
int
i
=
0
;
i
<
descriptor_
->
extension_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
descriptor_
->
extension_count
();
i
++
)
{
extension_generators_
.
push
_back
(
extension_generators_
.
emplace
_back
(
new
ExtensionGenerator
(
class_name_
,
descriptor_
->
extension
(
i
)));
new
ExtensionGenerator
(
class_name_
,
descriptor_
->
extension
(
i
)));
}
}
for
(
int
i
=
0
;
i
<
descriptor_
->
oneof_decl_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
descriptor_
->
oneof_decl_count
();
i
++
)
{
OneofGenerator
*
generator
=
new
OneofGenerator
(
descriptor_
->
oneof_decl
(
i
));
OneofGenerator
*
generator
=
new
OneofGenerator
(
descriptor_
->
oneof_decl
(
i
));
oneof_generators_
.
push
_back
(
generator
);
oneof_generators_
.
emplace
_back
(
generator
);
}
}
for
(
int
i
=
0
;
i
<
descriptor_
->
enum_type_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
descriptor_
->
enum_type_count
();
i
++
)
{
EnumGenerator
*
generator
=
new
EnumGenerator
(
descriptor_
->
enum_type
(
i
));
EnumGenerator
*
generator
=
new
EnumGenerator
(
descriptor_
->
enum_type
(
i
));
enum_generators_
.
push
_back
(
generator
);
enum_generators_
.
emplace
_back
(
generator
);
}
}
for
(
int
i
=
0
;
i
<
descriptor_
->
nested_type_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
descriptor_
->
nested_type_count
();
i
++
)
{
...
@@ -203,32 +203,20 @@ MessageGenerator::MessageGenerator(const string& root_classname,
...
@@ -203,32 +203,20 @@ MessageGenerator::MessageGenerator(const string& root_classname,
new
MessageGenerator
(
root_classname_
,
new
MessageGenerator
(
root_classname_
,
descriptor_
->
nested_type
(
i
),
descriptor_
->
nested_type
(
i
),
options
);
options
);
nested_message_generators_
.
push
_back
(
generator
);
nested_message_generators_
.
emplace
_back
(
generator
);
}
}
}
}
MessageGenerator
::~
MessageGenerator
()
{
MessageGenerator
::~
MessageGenerator
()
{}
STLDeleteContainerPointers
(
extension_generators_
.
begin
(),
extension_generators_
.
end
());
STLDeleteContainerPointers
(
enum_generators_
.
begin
(),
enum_generators_
.
end
());
STLDeleteContainerPointers
(
nested_message_generators_
.
begin
(),
nested_message_generators_
.
end
());
STLDeleteContainerPointers
(
oneof_generators_
.
begin
(),
oneof_generators_
.
end
());
}
void
MessageGenerator
::
GenerateStaticVariablesInitialization
(
void
MessageGenerator
::
GenerateStaticVariablesInitialization
(
io
::
Printer
*
printer
)
{
io
::
Printer
*
printer
)
{
for
(
std
::
vector
<
ExtensionGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
extension_generators_
)
{
extension_generators_
.
begin
();
generator
->
GenerateStaticVariablesInitialization
(
printer
);
iter
!=
extension_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateStaticVariablesInitialization
(
printer
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
generator
->
GenerateStaticVariablesInitialization
(
printer
);
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateStaticVariablesInitialization
(
printer
);
}
}
}
}
...
@@ -241,10 +229,8 @@ void MessageGenerator::DetermineForwardDeclarations(std::set<string>* fwd_decls)
...
@@ -241,10 +229,8 @@ void MessageGenerator::DetermineForwardDeclarations(std::set<string>* fwd_decls)
}
}
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
generator
->
DetermineForwardDeclarations
(
fwd_decls
);
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
DetermineForwardDeclarations
(
fwd_decls
);
}
}
}
}
...
@@ -253,10 +239,8 @@ bool MessageGenerator::IncludesOneOfDefinition() const {
...
@@ -253,10 +239,8 @@ bool MessageGenerator::IncludesOneOfDefinition() const {
return
true
;
return
true
;
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
const_iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
if
(
generator
->
IncludesOneOfDefinition
())
{
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
if
((
*
iter
)
->
IncludesOneOfDefinition
())
{
return
true
;
return
true
;
}
}
}
}
...
@@ -265,40 +249,31 @@ bool MessageGenerator::IncludesOneOfDefinition() const {
...
@@ -265,40 +249,31 @@ bool MessageGenerator::IncludesOneOfDefinition() const {
}
}
void
MessageGenerator
::
GenerateEnumHeader
(
io
::
Printer
*
printer
)
{
void
MessageGenerator
::
GenerateEnumHeader
(
io
::
Printer
*
printer
)
{
for
(
std
::
vector
<
EnumGenerator
*>::
iterator
iter
=
enum_generators_
.
begin
();
for
(
const
auto
&
generator
:
enum_generators_
)
{
iter
!=
enum_generators_
.
end
();
++
iter
)
{
generator
->
GenerateHeader
(
printer
);
(
*
iter
)
->
GenerateHeader
(
printer
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
generator
->
GenerateEnumHeader
(
printer
);
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateEnumHeader
(
printer
);
}
}
}
}
void
MessageGenerator
::
GenerateExtensionRegistrationSource
(
void
MessageGenerator
::
GenerateExtensionRegistrationSource
(
io
::
Printer
*
printer
)
{
io
::
Printer
*
printer
)
{
for
(
std
::
vector
<
ExtensionGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
extension_generators_
)
{
extension_generators_
.
begin
();
generator
->
GenerateRegistrationSource
(
printer
);
iter
!=
extension_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateRegistrationSource
(
printer
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
generator
->
GenerateExtensionRegistrationSource
(
printer
);
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateExtensionRegistrationSource
(
printer
);
}
}
}
}
void
MessageGenerator
::
GenerateMessageHeader
(
io
::
Printer
*
printer
)
{
void
MessageGenerator
::
GenerateMessageHeader
(
io
::
Printer
*
printer
)
{
// This a a map entry message, just recurse and do nothing directly.
// This a a map entry message, just recurse and do nothing directly.
if
(
IsMapEntryMessage
(
descriptor_
))
{
if
(
IsMapEntryMessage
(
descriptor_
))
{
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
generator
->
GenerateMessageHeader
(
printer
);
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateMessageHeader
(
printer
);
}
}
return
;
return
;
}
}
...
@@ -325,9 +300,8 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) {
...
@@ -325,9 +300,8 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) {
printer
->
Print
(
"};
\n\n
"
);
printer
->
Print
(
"};
\n\n
"
);
}
}
for
(
std
::
vector
<
OneofGenerator
*>::
iterator
iter
=
oneof_generators_
.
begin
();
for
(
const
auto
&
generator
:
oneof_generators_
)
{
iter
!=
oneof_generators_
.
end
();
++
iter
)
{
generator
->
GenerateCaseEnum
(
printer
);
(
*
iter
)
->
GenerateCaseEnum
(
printer
);
}
}
string
message_comments
;
string
message_comments
;
...
@@ -366,9 +340,8 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) {
...
@@ -366,9 +340,8 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) {
}
}
if
(
!
oneof_generators_
.
empty
())
{
if
(
!
oneof_generators_
.
empty
())
{
for
(
std
::
vector
<
OneofGenerator
*>::
iterator
iter
=
oneof_generators_
.
begin
();
for
(
const
auto
&
generator
:
oneof_generators_
)
{
iter
!=
oneof_generators_
.
end
();
++
iter
)
{
generator
->
GenerateClearFunctionDeclaration
(
printer
);
(
*
iter
)
->
GenerateClearFunctionDeclaration
(
printer
);
}
}
printer
->
Print
(
"
\n
"
);
printer
->
Print
(
"
\n
"
);
}
}
...
@@ -376,18 +349,14 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) {
...
@@ -376,18 +349,14 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) {
if
(
descriptor_
->
extension_count
()
>
0
)
{
if
(
descriptor_
->
extension_count
()
>
0
)
{
printer
->
Print
(
"@interface $classname$ (DynamicMethods)
\n\n
"
,
printer
->
Print
(
"@interface $classname$ (DynamicMethods)
\n\n
"
,
"classname"
,
class_name_
);
"classname"
,
class_name_
);
for
(
std
::
vector
<
ExtensionGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
extension_generators_
)
{
extension_generators_
.
begin
();
generator
->
GenerateMembersHeader
(
printer
);
iter
!=
extension_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateMembersHeader
(
printer
);
}
}
printer
->
Print
(
"@end
\n\n
"
);
printer
->
Print
(
"@end
\n\n
"
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
generator
->
GenerateMessageHeader
(
printer
);
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateMessageHeader
(
printer
);
}
}
}
}
...
@@ -409,9 +378,8 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
...
@@ -409,9 +378,8 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
printer
->
Print
(
"@implementation $classname$
\n\n
"
,
printer
->
Print
(
"@implementation $classname$
\n\n
"
,
"classname"
,
class_name_
);
"classname"
,
class_name_
);
for
(
std
::
vector
<
OneofGenerator
*>::
iterator
iter
=
oneof_generators_
.
begin
();
for
(
const
auto
&
generator
:
oneof_generators_
)
{
iter
!=
oneof_generators_
.
end
();
++
iter
)
{
generator
->
GeneratePropertyImplementation
(
printer
);
(
*
iter
)
->
GeneratePropertyImplementation
(
printer
);
}
}
for
(
int
i
=
0
;
i
<
descriptor_
->
field_count
();
i
++
)
{
for
(
int
i
=
0
;
i
<
descriptor_
->
field_count
();
i
++
)
{
...
@@ -447,9 +415,8 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
...
@@ -447,9 +415,8 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
sizeof_has_storage
=
1
;
sizeof_has_storage
=
1
;
}
}
// Tell all the fields the oneof base.
// Tell all the fields the oneof base.
for
(
std
::
vector
<
OneofGenerator
*>::
iterator
iter
=
oneof_generators_
.
begin
();
for
(
const
auto
&
generator
:
oneof_generators_
)
{
iter
!=
oneof_generators_
.
end
();
++
iter
)
{
generator
->
SetOneofIndexBase
(
sizeof_has_storage
);
(
*
iter
)
->
SetOneofIndexBase
(
sizeof_has_storage
);
}
}
field_generators_
.
SetOneofIndexBase
(
sizeof_has_storage
);
field_generators_
.
SetOneofIndexBase
(
sizeof_has_storage
);
// sizeof_has_storage needs enough bits for the single fields that aren't in
// sizeof_has_storage needs enough bits for the single fields that aren't in
...
@@ -547,11 +514,9 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
...
@@ -547,11 +514,9 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
if
(
oneof_generators_
.
size
()
!=
0
)
{
if
(
oneof_generators_
.
size
()
!=
0
)
{
printer
->
Print
(
printer
->
Print
(
" static const char *oneofs[] = {
\n
"
);
" static const char *oneofs[] = {
\n
"
);
for
(
std
::
vector
<
OneofGenerator
*>::
iterator
iter
=
oneof_generators_
.
begin
();
for
(
const
auto
&
generator
:
oneof_generators_
)
{
iter
!=
oneof_generators_
.
end
();
++
iter
)
{
printer
->
Print
(
"
\"
$name$
\"
,
\n
"
,
"name"
,
printer
->
Print
(
generator
->
DescriptorName
());
"
\"
$name$
\"
,
\n
"
,
"name"
,
(
*
iter
)
->
DescriptorName
());
}
}
printer
->
Print
(
printer
->
Print
(
" };
\n
"
" };
\n
"
...
@@ -624,21 +589,17 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
...
@@ -624,21 +589,17 @@ void MessageGenerator::GenerateSource(io::Printer* printer) {
.
GenerateCFunctionImplementations
(
printer
);
.
GenerateCFunctionImplementations
(
printer
);
}
}
for
(
std
::
vector
<
OneofGenerator
*>::
iterator
iter
=
oneof_generators_
.
begin
();
for
(
const
auto
&
generator
:
oneof_generators_
)
{
iter
!=
oneof_generators_
.
end
();
++
iter
)
{
generator
->
GenerateClearFunctionImplementation
(
printer
);
(
*
iter
)
->
GenerateClearFunctionImplementation
(
printer
);
}
}
}
}
for
(
std
::
vector
<
EnumGenerator
*>::
iterator
iter
=
enum_generators_
.
begin
();
for
(
const
auto
&
generator
:
enum_generators_
)
{
iter
!=
enum_generators_
.
end
();
++
iter
)
{
generator
->
GenerateSource
(
printer
);
(
*
iter
)
->
GenerateSource
(
printer
);
}
}
for
(
std
::
vector
<
MessageGenerator
*>::
iterator
iter
=
for
(
const
auto
&
generator
:
nested_message_generators_
)
{
nested_message_generators_
.
begin
();
generator
->
GenerateSource
(
printer
);
iter
!=
nested_message_generators_
.
end
();
++
iter
)
{
(
*
iter
)
->
GenerateSource
(
printer
);
}
}
}
}
...
...
src/google/protobuf/compiler/objectivec/objectivec_message.h
View file @
98f0447a
...
@@ -85,10 +85,10 @@ class MessageGenerator {
...
@@ -85,10 +85,10 @@ class MessageGenerator {
FieldGeneratorMap
field_generators_
;
FieldGeneratorMap
field_generators_
;
const
string
class_name_
;
const
string
class_name_
;
const
string
deprecated_attribute_
;
const
string
deprecated_attribute_
;
std
::
vector
<
ExtensionGenerator
*
>
extension_generators_
;
std
::
vector
<
std
::
unique_ptr
<
ExtensionGenerator
>
>
extension_generators_
;
std
::
vector
<
EnumGenerator
*
>
enum_generators_
;
std
::
vector
<
std
::
unique_ptr
<
EnumGenerator
>
>
enum_generators_
;
std
::
vector
<
MessageGenerator
*
>
nested_message_generators_
;
std
::
vector
<
std
::
unique_ptr
<
MessageGenerator
>
>
nested_message_generators_
;
std
::
vector
<
OneofGenerator
*
>
oneof_generators_
;
std
::
vector
<
std
::
unique_ptr
<
OneofGenerator
>
>
oneof_generators_
;
};
};
}
// namespace objectivec
}
// namespace objectivec
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment