aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Thomas Van Lenten <thomasvl@google.com>2015-05-18 15:01:15 -0400
committerGravatar Thomas Van Lenten <thomasvl@google.com>2015-05-19 20:25:19 -0400
commitce55ff9441753164a34f31a48572ea2f1fb38aba (patch)
tree454090707d9d8a5e0289c9e10dbcbc4933bdb30c
parent4324bf6bf2d217a478356ccc190acb21347b63b3 (diff)
Getting the ObjC generator building on Windows.
Remove the ClassList support (maybe bring it back in the future). Trim the includes to hopefully get a working Window build. Add some more returns after switches for compilers that warn even when all values of the enum are handled. Use ghtonl instead of htonl. Change the use of [u]int(8,32)_t within the ObjC generator code to [u]int(8,32) to match the rest of the compiler. Add objective-c generator files to Visual Studio project.
-rwxr-xr-xobjectivec/DevTools/check_version_stamps.sh2
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_extension.cc1
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_field.cc6
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_file.cc7
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_generator.cc4
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_helpers.cc89
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_helpers.h7
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc4
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_message.cc5
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc7
-rw-r--r--vsprojects/libprotoc.vcproj96
11 files changed, 125 insertions, 103 deletions
diff --git a/objectivec/DevTools/check_version_stamps.sh b/objectivec/DevTools/check_version_stamps.sh
index 5de9ef14..7fc44265 100755
--- a/objectivec/DevTools/check_version_stamps.sh
+++ b/objectivec/DevTools/check_version_stamps.sh
@@ -25,7 +25,7 @@ readonly ConstantName=GOOGLE_PROTOBUF_OBJC_GEN_VERSION
readonly PluginSrc="${ProtoRootDir}/src/google/protobuf/compiler/objectivec/objectivec_file.cc"
readonly PluginVersion=$( \
cat "${PluginSrc}" \
- | sed -n -e "s:const int32_t ${ConstantName} = \([0-9]*\);:\1:p"
+ | sed -n -e "s:const int32 ${ConstantName} = \([0-9]*\);:\1:p"
)
if [[ -z "${PluginVersion}" ]] ; then
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_extension.cc b/src/google/protobuf/compiler/objectivec/objectivec_extension.cc
index b19c1b45..0574cca2 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_extension.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_extension.cc
@@ -77,7 +77,6 @@ ExtensionGenerator::ExtensionGenerator(const string& root_class_name,
ExtensionGenerator::~ExtensionGenerator() {}
void ExtensionGenerator::GenerateMembersHeader(io::Printer* printer) {
- WriteClassNameToClassList(root_class_and_method_name_);
if (IsFiltered()) {
printer->Print("// $filter_reason$\n\n", "filter_reason", filter_reason_);
return;
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_field.cc b/src/google/protobuf/compiler/objectivec/objectivec_field.cc
index b071ce5d..93fffe0e 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_field.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_field.cc
@@ -39,10 +39,6 @@
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/strutil.h>
-#ifndef htonl
-#include <netinet/in.h>
-#endif
-
namespace google {
namespace protobuf {
namespace compiler {
@@ -107,7 +103,7 @@ void SetCommonFieldVariables(const FieldDescriptor* descriptor,
string field_options = descriptor->options().SerializeAsString();
// Must convert to a standard byte order for packing length into
// a cstring.
- uint32_t length = htonl(field_options.length());
+ uint32 length = ghtonl(field_options.length());
if (length > 0) {
string bytes((const char*)&length, sizeof(length));
bytes.append(field_options);
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_file.cc b/src/google/protobuf/compiler/objectivec/objectivec_file.cc
index f1e8c0a0..b3ad448e 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_file.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_file.cc
@@ -40,13 +40,14 @@
#include <google/protobuf/stubs/strutil.h>
#include <sstream>
+namespace google {
+namespace protobuf {
+
// This is also found in GPBBootstrap.h, and needs to be kept in sync. It
// is the version check done to ensure generated code works with the current
// runtime being used.
-const int32_t GOOGLE_PROTOBUF_OBJC_GEN_VERSION = 30000;
+const int32 GOOGLE_PROTOBUF_OBJC_GEN_VERSION = 30000;
-namespace google {
-namespace protobuf {
namespace compiler {
namespace objectivec {
FileGenerator::FileGenerator(const FileDescriptor *file)
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_generator.cc b/src/google/protobuf/compiler/objectivec/objectivec_generator.cc
index 1eb31a79..17776715 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_generator.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_generator.cc
@@ -82,10 +82,6 @@ bool ObjectiveCGenerator::Generate(const FileDescriptor* file,
file_generator.GenerateSource(&printer);
}
- if (!WriteClassList(error)) {
- return false;
- }
-
return true;
}
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
index a4eba09b..d4675f02 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
@@ -28,12 +28,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <arpa/inet.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <unistd.h>
-
#include <fstream>
#include <iostream>
#include <sstream>
@@ -46,14 +40,6 @@
#include <google/protobuf/descriptor.pb.h>
#include <google/protobuf/stubs/strutil.h>
-#ifndef htonl
-#include <netinet/in.h>
-#endif
-
-#ifndef O_EXLOCK
-#include <sys/file.h>
-#endif
-
// NOTE: src/google/protobuf/compiler/plugin.cc makes use of cerr for some
// error case, so it seem to be ok to use as a back door for errors.
@@ -65,7 +51,6 @@ namespace objectivec {
namespace {
hash_set<string> gClassWhitelist;
-stringstream gClassListStream;
// islower()/isupper()/tolower()/toupper() change based on locale.
@@ -754,7 +739,7 @@ string DefaultValue(const FieldDescriptor* field) {
// Must convert to a standard byte order for packing length into
// a cstring.
- uint32_t length = htonl(default_string.length());
+ uint32 length = ghtonl(default_string.length());
string bytes((const char*)&length, sizeof(length));
bytes.append(default_string);
return "(NSData*)\"" + CEscape(bytes) + "\"";
@@ -809,60 +794,6 @@ string BuildCommentsString(const SourceLocation& location) {
return final_comments;
}
-bool WriteClassList(string* error) {
- const char* file_name = getenv("GPB_CLASSLIST_PATH");
- if (file_name != NULL) {
-#ifndef O_EXLOCK
- int fd = open(file_name, O_WRONLY | O_APPEND | O_CREAT,
- (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
-#else
- int fd = open(file_name, O_WRONLY | O_APPEND | O_EXLOCK | O_CREAT,
- (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
-#endif
- if (fd == -1) {
- if (error != NULL) {
- stringstream err_stream;
- err_stream << endl << file_name << ":0:0: error:"
- << "Unable to open (" << errno << ")";
- *error = err_stream.str();
- }
- return false;
- }
-#ifndef O_EXLOCK
- if (flock(fd, LOCK_EX) < 0) {
- if (error != NULL) {
- stringstream err_stream;
- err_stream << endl << file_name << ":0:0: error:"
- << "Unable to lock (" << errno << ")";
- *error = err_stream.str();
- }
- return false;
- }
-#endif
- // Need a local to hold the list so the cstring stays valid for the
- // write call.
- const string& class_list_str = gClassListStream.str();
- int write_out = write(fd, class_list_str.c_str(), class_list_str.length());
- int close_out = close(fd);
- if (write_out == -1 || close_out == -1) {
- if (error != NULL) {
- stringstream err_stream;
- err_stream << endl << file_name << ":0:0: error:"
- << "Unable to write (" << errno << ")";
- *error = err_stream.str();
- }
- return false;
- }
- }
- return true;
-}
-
-void WriteClassNameToClassList(const string& name) {
- if (gClassListStream.good()) {
- gClassListStream << name << '\n';
- }
-}
-
bool InitializeClassWhitelist(string* error) {
const char* env_var_value = getenv("GPB_OBJC_CLASS_WHITELIST_PATHS");
if (env_var_value == NULL) {
@@ -917,7 +848,7 @@ bool FilterClass(const string& name) {
return gClassWhitelist.size() > 0;
}
-void TextFormatDecodeData::AddString(int32_t key,
+void TextFormatDecodeData::AddString(int32 key,
const string& input_for_decode,
const string& desired_output) {
for (vector<DataEntry>::const_iterator i = entries_.begin();
@@ -973,14 +904,14 @@ class DecodeDataBuilder {
}
private:
- static const uint8_t kAddUnderscore = 0b10000000;
+ static const uint8 kAddUnderscore = 0x80;
- static const uint8_t kOpAsIs = 0b00000000;
- static const uint8_t kOpFirstUpper = 0b01000000;
- static const uint8_t kOpFirstLower = 0b00100000;
- static const uint8_t kOpAllUpper = 0b01100000;
+ static const uint8 kOpAsIs = 0x00;
+ static const uint8 kOpFirstUpper = 0x40;
+ static const uint8 kOpFirstLower = 0x20;
+ static const uint8 kOpAllUpper = 0x60;
- static const int kMaxSegmentLen = 0b00011111;
+ static const int kMaxSegmentLen = 0x1f;
void AddChar(const char desired) {
++segment_len_;
@@ -988,7 +919,7 @@ class DecodeDataBuilder {
}
void Push() {
- uint8_t op = (op_ | segment_len_);
+ uint8 op = (op_ | segment_len_);
if (need_underscore_) op |= kAddUnderscore;
if (op != 0) {
decode_data_ += (char)op;
@@ -1020,7 +951,7 @@ class DecodeDataBuilder {
bool need_underscore_;
bool is_all_upper_;
- uint8_t op_;
+ uint8 op_;
int segment_len_;
string decode_data_;
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers.h b/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
index 2701a30c..ab030d15 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
@@ -142,9 +142,6 @@ string BuildFlagsString(const vector<string>& strings);
string BuildCommentsString(const SourceLocation& location);
-bool WriteClassList(string* error);
-void WriteClassNameToClassList(const string& name);
-
bool InitializeClassWhitelist(string* error);
bool FilterClass(const string& name);
@@ -154,7 +151,7 @@ class TextFormatDecodeData {
public:
TextFormatDecodeData() {}
- void AddString(int32_t key, const string& input_for_decode,
+ void AddString(int32 key, const string& input_for_decode,
const string& desired_output);
size_t num_entries() const { return entries_.size(); }
string Data() const;
@@ -165,7 +162,7 @@ class TextFormatDecodeData {
private:
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TextFormatDecodeData);
- typedef std::pair<int32_t, string> DataEntry;
+ typedef std::pair<int32, string> DataEntry;
vector<DataEntry> entries_;
};
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc b/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc
index c9682b08..01e937c3 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc
@@ -150,7 +150,7 @@ TEST(ObjCHelper, TextFormatDecodeData_RawStrings) {
EXPECT_EQ(4, decode_data.num_entries());
- uint8_t expected_data[] = {
+ uint8 expected_data[] = {
0x4,
0x1, 0x0, 'z', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'I', 'J', 0x0,
0x3, 0x0, 'a', 'b', 'c', 'd', 'e', 'z', 'g', 'h', 'I', 'J', 0x0,
@@ -175,7 +175,7 @@ TEST(ObjCHelper, TextFormatDecodeData_ByteCodes) {
EXPECT_EQ(5, decode_data.num_entries());
- uint8_t expected_data[] = {
+ uint8 expected_data[] = {
0x5,
// All as is (00 op)
0x1, 0x0A, 0x0,
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_message.cc b/src/google/protobuf/compiler/objectivec/objectivec_message.cc
index 87e4d0f8..f6a5852d 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_message.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_message.cc
@@ -119,6 +119,9 @@ int OrderGroupForFieldDescriptor(const FieldDescriptor* descriptor) {
case FieldDescriptor::TYPE_BOOL:
return 1;
}
+
+ GOOGLE_LOG(FATAL) << "Can't get here.";
+ return 0;
}
struct FieldOrderingByStorageSize {
@@ -303,8 +306,6 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) {
return;
}
- WriteClassNameToClassList(class_name_);
-
if (IsFiltered()) {
printer->Print("// $filter_reason$\n\n",
"filter_reason", filter_reason_);
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc b/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc
index 8272c67b..54f94284 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc
@@ -76,6 +76,9 @@ const char* PrimitiveTypeName(const FieldDescriptor* descriptor) {
case OBJECTIVECTYPE_MESSAGE:
return NULL;
}
+
+ GOOGLE_LOG(FATAL) << "Can't get here.";
+ return NULL;
}
const char* PrimitiveArrayTypeName(const FieldDescriptor* descriptor) {
@@ -104,6 +107,9 @@ const char* PrimitiveArrayTypeName(const FieldDescriptor* descriptor) {
case OBJECTIVECTYPE_MESSAGE:
return ""; // Want NSArray
}
+
+ GOOGLE_LOG(FATAL) << "Can't get here.";
+ return NULL;
}
void SetPrimitiveVariables(const FieldDescriptor* descriptor,
@@ -155,7 +161,6 @@ void RepeatedPrimitiveFieldGenerator::FinishInitialization(void) {
}
}
-
} // namespace objectivec
} // namespace compiler
} // namespace protobuf
diff --git a/vsprojects/libprotoc.vcproj b/vsprojects/libprotoc.vcproj
index 8c93b955..d1f065e2 100644
--- a/vsprojects/libprotoc.vcproj
+++ b/vsprojects/libprotoc.vcproj
@@ -372,6 +372,54 @@
<File RelativePath="..\src\google\protobuf\compiler\javanano\javanano_params.h"></File>
<File RelativePath="..\src\google\protobuf\compiler\javanano\javanano_primitive_field.h"></File>
<File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_enum.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_enum_field.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_extension.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_field.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_file.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_generator.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_helpers.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_map_field.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_message.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_message_field.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_oneof.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_primitive_field.h"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\compiler\python\python_generator.h"
>
</File>
@@ -636,6 +684,54 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_enum.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_enum_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_extension.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_file.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_generator.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_helpers.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_map_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_message.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_message_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_oneof.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\objectivec\objectivec_primitive_field.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\compiler\plugin.cc"
>
</File>