1. 14 Jan, 2014 2 commits
  2. 13 Jan, 2014 2 commits
  3. 10 Jan, 2014 2 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
  4. 19 Dec, 2013 1 commit
  5. 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
  6. 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
  7. 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
  8. 05 Dec, 2013 1 commit
  9. 22 Nov, 2013 1 commit
  10. 18 Nov, 2013 2 commits
  11. 15 Nov, 2013 5 commits
  12. 13 Nov, 2013 1 commit
  13. 12 Nov, 2013 2 commits
  14. 11 Nov, 2013 1 commit
    • Tom Chao's avatar
      Minimize method count for nanoproto. · 28b4dec7
      Tom Chao authored
      - Migrates getCachedSize to the MessageNano parent class to save one method per message.
      - Create ExtendableMessageNano parent class for protos with extensions, this saves the
      getExtension and setExtension methods on the relevant messages.
      - getSerializedSize's default case (with no fields to serialize) also migrate to the
      parent class, which saves methods on empty messages.
      - Container classes become interfaces to save the constructor.
      
      Change-Id: I81f1a1b6d6a660096835e9df3ea20456655aab4a
      28b4dec7
  15. 07 Nov, 2013 1 commit
  16. 06 Nov, 2013 1 commit
  17. 05 Nov, 2013 1 commit
    • Aurash Mahbod's avatar
      Allow for ref-type arrays containing null elements. · 3f0c3480
      Aurash Mahbod authored
      Strip the null elements out before serializing the array.
      This is helpful in the cases where the user wants to construct
      an array of an inexact size for serialization. For example:
      User constructs array of size 5 because they anticipate adding
      more than 1 element before serialization. Only 3 get added, so
      the array looks like [Obj, Obj, Obj, null, null]. This would
      curently crash without this CL.
      
      All repeated fields of ref-type elements can contain null
      elements: repeated strings, repeated bytes, and repeated
      messages/groups.
      
      Change-Id: I117391c868c9a436536d70d6151780e9cc7e8227
      
      Conflicts:
      	src/google/protobuf/compiler/javanano/javanano_message_field.cc
      3f0c3480
  18. 25 Oct, 2013 3 commits
  19. 16 Oct, 2013 8 commits
  20. 15 Oct, 2013 1 commit
    • Max Cai's avatar
      Fix repeated field merging semantics. · cd3c68b2
      Max Cai authored
      The public doc states that repeated fields are simply concatenated
      and doesn't impose a different semantics for packed fields. This
      CL fixes this for packed fields and adds tests covering all cases.
      
      Also fixed a bit of missed null-repeated-field treatments.
      
      Change-Id: Ie35277bb1a9f0b8171dc9d07b6adf9b9d3308de2
      cd3c68b2