aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Paul Yang <paulyang1211@gmail.com>2015-05-21 11:20:15 -0700
committerGravatar Paul Yang <paulyang1211@gmail.com>2015-05-21 11:20:15 -0700
commitc3480926f98eb7c45224daae5cf0373e120b3b8d (patch)
tree3f57dbd6399e2496a6c797fb59a71ac00e949552
parent3668a224f3ea870a1b8026ba0709f964ed75d53b (diff)
parentce55ff9441753164a34f31a48572ea2f1fb38aba (diff)
Merge pull request #402 from thomasvl/objc_on_win
Getting the ObjC generator building on Windows.
-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>