- 16 Jan, 2014 1 commit
-
-
Max Cai authored
Invalid values from the wire are silently ignored. Unlike full/lite, the invalid values are not stored into the unknown fields, because there's no way to get them out from Nano's unknown fields without a matching Extension. Edited README and slightly moved it towards a standalone section for Nano, independent of the Micro section. Change-Id: I2c1eb07f4d6d8f3aea242b8ddd95b9c966f3f177
-
- 14 Jan, 2014 2 commits
- 13 Jan, 2014 2 commits
- 10 Jan, 2014 2 commits
-
-
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
-
Max Cai authored
Change-Id: Ibbe944fff83e44a8f2206e18ee9ec6f10661297a
-
- 19 Dec, 2013 1 commit
-
-
Andrew Flynn authored
-
- 12 Dec, 2013 1 commit
-
-
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
-
- 10 Dec, 2013 3 commits
-
-
Max Cai authored
-
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
-
Max Cai authored
-
- 09 Dec, 2013 1 commit
-
-
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
-
- 05 Dec, 2013 1 commit
-
-
The Android Open Source Project authored
-
- 22 Nov, 2013 1 commit
-
-
The Android Open Source Project authored
-
- 18 Nov, 2013 2 commits
-
-
Max Cai authored
-
Max Cai authored
It is a requirement for parsing code to handle packed and unpacked forms on the wire for repeated packable fields. This change aligns the javanano's behavior with the java's. Bonus: optimize array length calculation when parsing repeated fixed-size-element-type fields. Bonus 2: lose "xMemoizedSerializedSize" for repeated enum fields, and make the serialized size calculation match that for repeated int32 fields. Change-Id: I8a06103d9290234adb46b0971b5ed155544fe86a
-
- 15 Nov, 2013 5 commits
-
-
Max Cai authored
* commit '3e0d99fab8c1da2a8f36637b7bf5e8581143e36a': Update MessageNano#toString() to return mostly valid TextFormat.
-
Max Cai authored
-
Nicholas Seckar authored
The output of toString is now aligned with that used by non-nano and C++ runtimes, with the exception of groups. Groups should be serialized using a camelized name (e.g. "FooBar" rather than "foo_bar") however the nano runtime does not have information on which fields are groups. Changes are: - bytes fields are output within double-quotes, non-printable characters are output as octal escape sequences (i.e. \NNN); - field identifiers are output in underscored format; - unset fields are not output (rather than printing "null"); - the type name of the root message is not output. With these changes the nano toString, normal toString, and C++'s DebugString all produce equivalent output when given the same message. (Provided that message uses no deprecated features.) Change-Id: Id4791d73822846db29344db9f7bc3781c3e183a6
-
Max Cai authored
* commit '332076f08a9d46b772fee755832a0e09dd8cb6aa': Fix warnings warnings in header files, hide others.
-
Max Cai authored
-
- 13 Nov, 2013 1 commit
-
-
Kristian Monsen authored
Follow upstream where they have any changes in 2.5.0 Change-Id: I3466e9c11242f533a9dff8c1afef4202dd100f2e
-
- 12 Nov, 2013 2 commits
- 11 Nov, 2013 1 commit
-
-
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
-
- 07 Nov, 2013 1 commit
-
-
Max Cai authored
* commit '8a15121c1077fe883f428bd27dee6b99e06e48b6': Allow for ref-type arrays containing null elements.
-
- 06 Nov, 2013 1 commit
-
-
Max Cai authored
-
- 05 Nov, 2013 1 commit
-
-
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
-
- 25 Oct, 2013 3 commits
-
-
Max Cai authored
* commit 'bb971d53626cb286f8dc491c15d2731001c4891b': Implement hashCode() and equals() behind a generator option.
-
Max Cai authored
-
Brian Duff authored
The option is only called 'generate_equals' because: - equals() is the main thing; hashCode() is there only to complement equals(); - it's shorter; - toString() should not be included in this option because it's more for debugging and it's more likely to stop ProGuard from working well. Also shortened the "has bit" expression; was ((bitField & mask) == mask), now ((bitField & mask) != 0). Both the Java code and the bytecode are slightly shorter. Change-Id: Ic309a08a60883bf454eb6612679aa99611620e76
-
- 16 Oct, 2013 8 commits
-
-
Max Cai authored
* commit '42be1e79ccd670be36220222936aa7cacc6856f6': Feature request: set() and clear() accessors return this
-
Max Cai authored
-
Max Cai authored
Also pre-inlines set() and has() in serialization code. This could theoretically help ProGuard: the message class size is usually large, and because of this only, it may refuse to inline an accessor into the serialization code, and as a result keeps the accessor intact. Chances are, after pre-inlining all accessor calls within the message class, those accessors become unused or single-use, so there are more reasons for ProGuard to inline and then remove them. Change-Id: I57decbe0b2533c1be21439de0aad15f49c7024dd
-
Max Cai authored
* commit 'c50f605c572a425b2fa696fedc5e61ac6f66d2a9': Make generated code more aligned with Google Java style.
-
Max Cai authored
-
Max Cai authored
- Blank line after opening a message class (but not an enum interface). - Let all code blocks insert blank lines before themselves. This applies to 'package' statement, all message classes, enum classes or constant groups, extensions, bitfields, proto fields (one block per field; i.e. accessors don't have blank lines among them), and basic MessageNano methods. In this case we don't need to guess what the next block is and create blank lines for it. - Fixed some newline/indent errors. - Only one SuppressWarnings("hiding") per file. Change-Id: I865f52ad4fb6ea3b3a98b97ac9d78d19fc46c858
-
Max Cai authored
* commit 'afaf74ce55f4aff63dc30e7045a7cd6c1cf232dc': Fix repeated field merging semantics.
-
Max Cai authored
-