1dcc329427
- Style fixups in the code. - map<> serialization fixes and more tests. - Autocreation of map<> fields (to match repeated fields). - @@protoc_insertion_point(global_scope|imports). - Fixup proto2 syntax extension support. - Move all startup code to +initialize so it happen on class usage and not app startup. - Have generated headers use forward declarations and move imports into generated code, reduces what is need at compile time to speed up compiled and avoid pointless rippling of rebuilds. |
||
---|---|---|
.. | ||
DevTools | ||
google/protobuf | ||
ProtocolBuffers_iOS.xcodeproj | ||
ProtocolBuffers_OSX.xcodeproj | ||
Tests | ||
generate_descriptors_proto.sh | ||
GPBArray_PackagePrivate.h | ||
GPBArray.h | ||
GPBArray.m | ||
GPBBootstrap.h | ||
GPBCodedInputStream_PackagePrivate.h | ||
GPBCodedInputStream.h | ||
GPBCodedInputStream.m | ||
GPBCodedOutputStream.h | ||
GPBCodedOutputStream.m | ||
GPBDescriptor_PackagePrivate.h | ||
GPBDescriptor.h | ||
GPBDescriptor.m | ||
GPBDictionary_PackagePrivate.h | ||
GPBDictionary.h | ||
GPBDictionary.m | ||
GPBExtensionField_PackagePrivate.h | ||
GPBExtensionField.h | ||
GPBExtensionField.m | ||
GPBExtensionRegistry.h | ||
GPBExtensionRegistry.m | ||
GPBField_PackagePrivate.h | ||
GPBField.h | ||
GPBField.m | ||
GPBMessage_PackagePrivate.h | ||
GPBMessage.h | ||
GPBMessage.m | ||
GPBProtocolBuffers_RuntimeSupport.h | ||
GPBProtocolBuffers.h | ||
GPBProtocolBuffers.m | ||
GPBRootObject_PackagePrivate.h | ||
GPBRootObject.h | ||
GPBRootObject.m | ||
GPBTypes.h | ||
GPBUnknownFieldSet_PackagePrivate.h | ||
GPBUnknownFieldSet.h | ||
GPBUnknownFieldSet.m | ||
GPBUtilities_PackagePrivate.h | ||
GPBUtilities.h | ||
GPBUtilities.m | ||
GPBWellKnownTypes.h | ||
GPBWellKnownTypes.m | ||
GPBWireFormat.h | ||
GPBWireFormat.m | ||
README.md |
Protocol Buffers - Google's data interchange format
Copyright 2008 Google Inc.
This directory contains the Objective C Protocol Buffers runtime library.
Requirements
The Objective C implemention requires:
- Objective C 2.0 Runtime (32bit & 64bit iOS, 64bit OS X).
- Xcode 6.3 (or later).
- The library code does not use ARC (for performance reasons), but it all can be called from ARC code.
Installation
The full distribution pulled from github includes the sources for both the compiler (protoc) and the runtime (this directory). To build the compiler and run the runtime tests, you can use:
$ objectivec/DevTools/full_mac_build.sh
This will generate the src/protoc
binary.
Usage
There are two ways to include the Runtime sources in your project:
Add objectivec/\*.h
& objectivec/GPBProtocolBuffers.m
to your project.
or
Add objectivec/\*.h
& objectivec/\*.m
except for
objectivec/GPBProtocolBuffers.m
to your project.
If the target is using ARC, remember to turn off ARC (-fno-objc-arc
) for the
.m
files.
The files generated by protoc
for the *.proto
files (\*.pbobjc.h' and
*.pbobjc.m`) are then also added to the target.
The Objective C classes/enums can be used from Swift code.
Objective C Generator Options
objc_class_prefix=<prefix> (no default)
Since Objective C uses a global namespace for all of its classes, there can be collisions. This option provides a prefix that will be added to the Enums and Objects (for messages) generated from the proto. Convention is to base the prefix on the package the proto is in.
Contributing
Please make updates to the tests along with changes. If just changing the
runtime, the Xcode projects can be used to build and run tests. If change also
require changes to the generated code, objectivec/DevTools/full_mac_build.sh
can be used to easily rebuild and test changes. Passing -h
to the script will
show the addition options that could be useful.
Documentation
The complete documentation for Protocol Buffers is available via the web at:
https://developers.google.com/protocol-buffers/