Commit Graph

23 Commits

Author SHA1 Message Date
kenton@google.com
de75437573 Simplify some template usage so that older compilers can handle it. (Users
report that MSVC 2003 in particular needs this change.)
2008-11-06 21:36:28 +00:00
kenton@google.com
3e91fcdd87 Work around GCC 4.3.0 x86_64 compiler bug (seen on Fedora 9).
Details:

For each message type, protoc generates an array of byte offsets of each of
the fields within the message class.  These offsets are later used by the
reflection implementation.  Prior to this revision, the offset arrays were
allocated as global variables.  Since they were just arrays of ints, they
should have been initialized at compile time.  Unfortunately, GCC 4.3.0
incorrectly decides that they cannot be initialized at compile time because
the values used to initialize the array have type ptrdiff_t, and GCC 4.3.0
does not recognize that it can convert ptrdiff_t to int at compile time.  This
bug did not seem to exist in previous versions of GCC.  Google's compiler
team has submitted a fix for this bug back to the GCC project, but we will
have to work around it anyway since Fedora 9 shipped with GCC 4.3.0.
2008-11-06 04:37:30 +00:00
kenton@google.com
3bdc135653 Avoid an "unused parameter" warning when using high warning levels. 2008-10-16 23:00:34 +00:00
kenton@google.com
7b29a2695c Update version number to 2.0.3-SNAPSHOT. 2008-10-16 22:56:18 +00:00
kenton@google.com
a41a9dd532 * Fixed template specialization syntax that MSVC 2005 didn't like. Not sure if
it was valid or not.
* Moved UTF-8 coding directive to the right place in reflection_test.py.
2008-10-03 17:27:48 +00:00
kenton@google.com
9b10f5845a * Fix build on MSVC.
* Switch to statically-linked libraries instead of DLLs on MSVC.
2008-09-30 00:09:40 +00:00
kenton@google.com
0b3023fa65 Add file missing from rev 50. 2008-09-24 20:32:37 +00:00
kenton@google.com
24bf56fb3a Integrate changes from internal Google-internal branch.
General
  * License changed from Apache 2.0 to New BSD.
  * It is now possible to define custom "options", which are basically
    annotations which may be placed on definitions in a .proto file.
    For example, you might define a field option called "foo" like so:
      import "google/protobuf/descriptor.proto"
      extend google.protobuf.FieldOptions {
        optional string foo = 12345;
      }
    Then you annotate a field using the "foo" option:
      message MyMessage {
        optional int32 some_field = 1 [(foo) = "bar"]
      }
    The value of this option is then visible via the message's
    Descriptor:
      const FieldDescriptor* field =
        MyMessage::descriptor()->FindFieldByName("some_field");
      assert(field->options().GetExtension(foo) == "bar");
    This feature has been implemented and tested in C++ and Java.
    Other languages may or may not need to do extra work to support
    custom options, depending on how they construct descriptors.

  C++
  * Fixed some GCC warnings that only occur when using -pedantic.
  * Improved static initialization code, making ordering more
    predictable among other things.
  * TextFormat will no longer accept messages which contain multiple
    instances of a singular field.  Previously, the latter instance
    would overwrite the former.
  * Now works on systems that don't have hash_map.

  Python
  * Strings now use the "unicode" type rather than the "str" type.
    String fields may still be assigned ASCII "str" values; they will
    automatically be converted.
  * Adding a property to an object representing a repeated field now
    raises an exception.  For example:
      # No longer works (and never should have).
      message.some_repeated_field.foo = 1
2008-09-24 20:31:01 +00:00
kenton@google.com
3121a56ab4 Add file that was mysteriously missing from SVN tree. 2008-09-23 21:05:07 +00:00
kenton@google.com
a69deb6477 Explicitly identify superclass in initializer lists for generated message
classes.  This avoids a warning when using GCC's -pedantic option.
2008-09-23 20:03:24 +00:00
kenton@google.com
4410396f11 Work around absence of hash_map.
Also, update version numbers to 2.0.2-SNAPSHOT.
2008-09-19 16:53:32 +00:00
temporal
4014b9f83f Add @Override annotation to generated Java code where appropriate.
Patch from Brian Atkinson <nairb774@gmail.com>.
2008-09-17 02:41:14 +00:00
temporal
742e40975a 2.0.1 release. 2008-08-27 19:25:48 +00:00
temporal
dd681ad786 More prep for 2.0.1:
* Fix version number test so that it accepts "2.0.1rc1".
* Add missing type_checkers.py to Makefile.am.
2008-08-18 22:55:31 +00:00
temporal
779f61c6a3 Integrate recent changes from google3.
protoc
- New flags --encode and --decode can be used to convert between protobuf text
  format and binary format from the command-line.
- New flag --descriptor_set_out can be used to write FileDescriptorProtos for
  all parsed files directly into a single output file.  This is particularly
  useful if you wish to parse .proto files from programs written in languages
  other than C++: just run protoc as a background process and have it output
  a FileDescriptorList, then parse that natively.

C++
- Reflection objects are now per-class rather than per-instance.  To make this
  possible, the Reflection interface had to be changed such that all methods
  take the Message instance as a parameter.  This change improves performance
  significantly in memory-bandwidth-limited use cases, since it makes the
  message objects smaller.  Note that source-incompatible interface changes
  like this will not be made again after the library leaves beta.

Python
- MergeFrom(message) and CopyFrom(message) are now implemented.
- SerializeToString() raises an exception if the message is missing required
  fields.
- Code organization improvements.
- Fixed doc comments for RpcController and RpcChannel, which had somehow been
  swapped.
2008-08-13 03:15:00 +00:00
temporal
a0f27fcd96 Heuristically detect sub-messages when printing unknown fields.
Patch mostly written by Dilip Joseph <dilip.antony.joseph@gmail.com>.
2008-08-06 01:12:21 +00:00
temporal
8ccb79057e Apply Leandro Lucarella <llucax@gmail.com>'s patches for VIM highlighting
and not setting execute bit on protoc outputs.
2008-07-31 01:43:34 +00:00
temporal
6fdb0964e3 Fix static initialization ordering bug that caused crashes at startup when
compiling on Mac with static linking.
2008-07-25 04:38:05 +00:00
temporal
f206351d14 Sync code with Google-internal branch. Changes:
Protoc (parser)
- Improved error message when an enum value's name conflicts with another
  symbol defined in the enum type's scope, e.g. if two enum types declared
  in the same scope have values with the same name.  This is disallowed for
  compatibility with C++, but this wasn't clear from the error.
C++
- Restored the set_foo(const char*) accessor for "bytes" type because some
  code inside Google depends on it.  However, set_foo(const char*, int) is
  still there (and actually is changed to take const void*).
- Fixed TokenizerTest when compiling with -DNDEBUG on Linux.
- Other irrelevant tweaks.
Java
- Fixed UnknownFieldSet's parsing of varints larger than 32 bits.
- Fixed TextFormat's parsing of "inf" and "nan".
- Fixed TextFormat's parsing of comments.
Python
- Fixed text_format_test on Windows where floating-point exponents sometimes
  contain extra zeros.
2008-07-23 01:19:07 +00:00
temporal
cc930432c2 misc. stuff:
- Improved readmes.
- Fixed incorrect definition of kint32min.
- Fixed absolute output paths on Windows.
- Added info to Java POM that will be required when we upload the
  package to a Maven repo.
2008-07-21 20:28:30 +00:00
temporal
e773b43253 Allow trailing slashes in --proto_path mappings.
Patch by Kevin Ko <kevin.s.ko@gmail.com>.
2008-07-16 20:57:56 +00:00
temporal
928ebb6b55 Fix bytes type setter to work with byte sequences with embedded NULLs.
Patch from Alkis Evlogimenos <alkis@evlogimenos.com>.
2008-07-16 02:00:27 +00:00
temporal
40ee551715 Initial checkin. 2008-07-10 02:12:20 +00:00