1. 01 May, 2014 1 commit
  2. 25 Apr, 2014 2 commits
    • Jeff Davidson's avatar
      a2724e7c
    • Jeff Davidson's avatar
      Support generation of Parcelable nano messages. · ec4b1ce0
      Jeff Davidson authored
      This CL adds the "parcelable_messages" option. When enabled, all
      generated message classes will conform to the Android Parcelable
      contract. This is achieved by introducing a new parent class for
      generated classes which implements the required functionality.
      
      Since the store_unknown_fields option also makes use of a superclass,
      ExtendableMessageNano, we have two versions of the new Parcelable
      superclass: one extending MessageNano, and one extending
      ExtendableMessageNano. These classes are otherwise identical.
      
      As these classes depend on Android framework jars, they are not
      included in the host .jar build of the nanoproto library.
      
      Finally, add a test suite for running tests of Android-specific
      functionality, as this cannot be done on a desktop JVM.
      
      Change-Id: Icc2a257f03317e947f7078dbb9857c3286857497
      ec4b1ce0
  3. 24 Apr, 2014 1 commit
  4. 23 Apr, 2014 1 commit
    • Jie Dai's avatar
      Adds --ignore_service nano proto compiler flag · d9425a62
      Jie Dai authored
      Nano proto compiler normally throws an error if any service is
      defined. If --ignore-services=true is set, no error is thrown and the
      service is simply skipped.
      
      Change-Id: Id82583555085cc55550d03a485d3f0189885240b
      d9425a62
  5. 14 Apr, 2014 1 commit
  6. 10 Apr, 2014 1 commit
  7. 22 Mar, 2014 2 commits
  8. 21 Mar, 2014 2 commits
  9. 17 Feb, 2014 1 commit
  10. 10 Feb, 2014 1 commit
  11. 16 Jan, 2014 2 commits
  12. 14 Jan, 2014 2 commits
  13. 13 Jan, 2014 2 commits
  14. 10 Jan, 2014 3 commits
    • Max Cai's avatar
      Correctness: floating point equality using bits instead of ==. · 79b311c1
      Max Cai authored
      Special values for float and double make it inaccurate to test the equality with ==.
      The main Java library uses the standard Object.equals() implementation for all fields,
      which for floating point fields means Float.equals() or Double.equals(). They define
      equality as bitwise equality, with all NaN representations normalized to the same bit
      sequence (and therefore equal to each other). This test checks that the nano
      implementation complies with Object.equals(), so NaN == NaN and +0.0 != -0.0.
      
      Change-Id: I97bb4a3687223d8a212c70cd736436b9dd80c1d7
      79b311c1
    • Max Cai's avatar
      Don't serialize required fields whose 'has' flags are unset. · 1b1735ce
      Max Cai authored
      Change-Id: Ibbe944fff83e44a8f2206e18ee9ec6f10661297a
      1b1735ce
    • Max Cai's avatar
      Extension overhaul. · e3714f00
      Max Cai authored
      - Get rid of TypeLiteral<T>. It was introduced to read the component
        type of a List<T> at runtime. But we use arrays everywhere else,
        and we can always read the component type of an array type at
        runtime.
      - Properly read/write "minor" types (e.g. sint32, sfixed32). The old
        implementation could only read/write data as the "typical" types
        (one per Java type), e.g. java.lang.Integer -> int32, java.lang.Long
        -> int64. So if e.g. an extension specifies sfixed32 as the type, it
        would be read/written in the totally incompatible int32 format.
      - Properly serialize repeated packed fields. The old implementation
        doesn't do packed serialization. As an added bonus, and to be more
        aligned with the rest of protobuf nano / main, repeated packable
        extensions can deserialize both packed and non-packed data.
      - Split Extension class into a hierarchy so under typical usage a
        large chunk of code dealing with primitive type extensions can be
        removed by ProGuard.
      
      Bug: https://code.google.com/p/android/issues/detail?id=62586
      Change-Id: I0d692f35cc2a8ad3a5a1cb3ce001282b2356b041
      e3714f00
  15. 19 Dec, 2013 1 commit
  16. 12 Dec, 2013 1 commit
    • Andrew Flynn's avatar
      Fix MessageNanoPrinter for accessors · 02a9ea00
      Andrew Flynn authored
      accessors mode switches proto fields away from being public fields (which is
      how MessageNanoPrinter found which fields to print via reflection). Add a
      pass through the methods looking for generated accessor methods to print
      those as well.
      
      Change-Id: I7c47853ecbd5534086f44b25a89dbbe56f63ed03
      02a9ea00
  17. 10 Dec, 2013 3 commits
    • Max Cai's avatar
      b3bc6095
    • Max Cai's avatar
      Avoid class initializers to help ProGuard. · 04feb76f
      Max Cai authored
      Class initializers prevent ProGuard from inlining any methods
      because it thinks the class initializer may have side effects.
      This is true for static methods, but instance methods can still
      be inlined, because to have an instance you will have touched
      the class and any class initializers would have run. But
      ProGuard only starts inlining instance methods of classes with
      class initializers from v4.11b6, and Android uses v4.4 now.
      
      This change tries to avoid the class initializers as much as
      possible, by delaying the initialization of the empty array and
      some fields' saved defaults until when they're needed. However,
      if the message hosts any extensions, they must be public static
      final and therefore introducing the class initializer. In that
      case we won't bother with lazy initialization.
      
      Change-Id: I00d8296f6eb0023112b93ee135cdb28dbd52b0b8
      04feb76f
    • Max Cai's avatar
  18. 09 Dec, 2013 1 commit
    • Andrew Flynn's avatar
      Nano: don't generate accessor methods for nested methods · c997c136
      Andrew Flynn authored
      For nested message objects, don't generate accessor methods because they have
      a default value that is not a valid value (null), so there is no reason to have
      get/set/has/clear methods for them. Clients and protos (while serializing) can
      check against the invalid value to see if it's been set.
      
      Change-Id: Ic63400889581271b8cbcd9c45c84519d4921fd4b
      c997c136
  19. 05 Dec, 2013 1 commit
  20. 22 Nov, 2013 1 commit
  21. 18 Nov, 2013 2 commits
  22. 15 Nov, 2013 5 commits
  23. 13 Nov, 2013 1 commit
  24. 12 Nov, 2013 2 commits