History log of /system/tools/aidl/type_namespace.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c5afb404a8e71475993f70239df09209fa428d25 01-Mar-2016 Casey Dahlin <sadmac@google.com> Propagate interface annotations to methods

Change-Id: I85f9686e4b5df7df0d9fb77e6a1b50a93ff3e2d7
Test: Unit tests pass
Bug: 26911508
/system/tools/aidl/type_namespace.cpp
5d9bc936e45b5ffe487b1807b4a028dc3dc4df9f 01-Feb-2016 Christopher Wiley <wiley@google.com> Support @utf8InCpp List<String>

Bug: 26729450
Change-Id: I2ac61aadef4c3ff0527fe68b3a104f72821dd2c4
Test: unit, integration tests pass
/system/tools/aidl/type_namespace.cpp
9f40372e71c5e2fdf840eeabb5531f12665e9a91 28-Jan-2016 Christopher Wiley <wiley@google.com> Remap String to alternate types when @utf8 or @utf8InCpp

Now, it is no longer sufficient to identify an AIDL type by its
package and class name, since the list of annotations is also
needed to uniquely identify the type.

Express this by mapping "@utf8InCpp String" to aidl-internal.Utf8InCppString
and then re-using existing mechanism to ask for a language specific
type given the canonical AIDL type string.
- Adding another type variant and corresponding pointer (i.e. the way
nullable and array work) would cause that type hierarchy to expand
the number of ways we have to connect the types.
- Passing a set of annotations through the type namespace adds
syntactic cruft we can avoid by mapping annotations to special
packages.
- Adding special getters for "utf8 string type" expands the contract
between the generic type namespace and the language specific type
name spaces. Currently the only mechanism to get a type is to
provide its canonical AIDL type.

Support @utf8InCpp in Java generation for the sake of unittests passing.
This type is identical to a normal string type (UTF16 on the wire).

Bug: 26729450
Test: unittests continue to pass

Change-Id: Ib017ce40ea01a50b50a157c0ef8b483a892b99b9
/system/tools/aidl/type_namespace.cpp
934a82d1b045a5944d115dece4cf01f539103c11 27-Jan-2016 Christopher Wiley <wiley@google.com> Make TypeNamespace take AidlNode subclass arguments

Because annotations are attached to AidlType, we need to know the
complete AidlType of arguments and return values in order to decide
which generated type to use. Make it an invariant that a TypeNamespace
takes only subclasses of AidlNode from aidl.cpp to make this easier to
reason about.

For now, leave most of the existing implementation in place, but push it
down into LanguageTypeNamespace.

Bug: 26729450
Test: unittests still pass

Change-Id: I6684564995c734def96daeccc03dfd5d264469ee
/system/tools/aidl/type_namespace.cpp
e22b41a8ecf20704050ef6dd4abdd0a39adb2320 25-Jan-2016 Christopher Wiley <wiley@google.com> Consolidate logic to retreive language specific type

In preparation for adding some special casing to the "String" AIDL type,
consolidate the logic to pick a language specific type from the aidl
type into a single helper function GetTypeImpl().

Rename GetValidatableType to GetTypeByName to avoid confusion and
better describe the semantics of that method.

Bug: 26729450
Test: unittests continue to pass

Change-Id: Ie9391ea90a31da77657353a87031492849b58409
/system/tools/aidl/type_namespace.cpp
57dbe24bcb8f4509a876e8445c78d9504d7e616a 04-Dec-2015 Casey Dahlin <sadmac@google.com> Add support for @nullable annotation

Using this annotation will now cause C++ types to be wrapped in
unique_ptr, and by extension be capable of handling null values.

Support extends to all arrays, Strings, Lists, and Parcelables.

Change-Id: I148a3666279c2badcba097b8925e55f8fcecb9c2
Test: Unit tests pass
Bug: 25969194
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
0a62067f35e957493bc37c4b42dfdcfc16353831 04-Dec-2015 Elliott Hughes <enh@google.com> Track base/ -> android-base/ change.

Change-Id: I02b64b42c17d248c5fb2c4de4b0778a441e018e3
/system/tools/aidl/type_namespace.cpp
09af469476ea6d187b52f22113d3b168a887100c 30-Oct-2015 Christopher Wiley <wiley@google.com> Consolidate type checking logic

Move logic used to check types used in AIDL into a common superclass
of the language specific type namespaces. Add a templated
LanguageTypeNamespace class to allow language specific type reasoning
while sharing an implementation.

Move functionality important to the the AIDL type checking into
ValidatableType and out of the Java and C++ subclasses.

Removed GenericType from the Java type system because it messed around
with the canonical name for a type post construction, while adding
absolutely no value of its own.

Bug: 24470786
Test: unittests continue to pass, full build of android succeeds.

Change-Id: Ic03eb5d770c7f51abbde87c20a9b7287ce6a277e
/system/tools/aidl/type_namespace.cpp
cd8e89795c331e3e5c75e92d7c7804f389804e08 26-Oct-2015 Christopher Wiley <wiley@google.com> Consolidate container canonicalization logic

We need this same logic while piecing together C++ types because
we still have to reason about the type names used in AIDL.

Bug: 24470786
Test: unittests pass, integration tests pass

Change-Id: Ief2d531e1dace5e5e299f3aa246a870eb9c932c6
/system/tools/aidl/type_namespace.cpp
7fe26299e5b652c1bdf003e8e3db5ea20269da92 24-Oct-2015 Christopher Wiley <wiley@google.com> Fix up some error reporting in type_namespace.cpp

- Use AidlType::ToString() to properly report array types
- Don't mention the name of the parameter twice when reporting errors

Bug: None
Test: Errors writing integration tests are properly reported now.

Change-Id: I472d1f6279e4f94799518ee8ed0ef915d0974a32
/system/tools/aidl/type_namespace.cpp
90be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6 20-Oct-2015 Christopher Wiley <wiley@google.com> Fix segfault on missing package declaration

Add unittests to enforce this doesn't happen again. While here
add unittests for out params in oneway methods and make
ownership of AidlInterface pointers more explicit.

Also fix a bug where we would disallow returning void from functions
in C++ generation.

Bug: 24862770
Test: Unittests pass

Change-Id: I4fa67489ad1fff0d4453d38689e54b9f5ad08c43
/system/tools/aidl/type_namespace.cpp
b656a3b1954bbe4b548a3c11274c833bbca35935 16-Oct-2015 Christopher Wiley <wiley@google.com> Generate C++ in namespaces based on package

Bug: 24862770
Test: unittests

Change-Id: Iaa3b4716ca340ade745208a2f2efc057205d0f1d
/system/tools/aidl/type_namespace.cpp
98a544b567e20f6c8492e1d4eb8869e759ae74d9 14-Oct-2015 Casey Dahlin <sadmac@google.com> Remove parse_helpers.cpp/h/unit tests

This test was very silly, and the contents of this file are better off
elsewhere.

Bug: 24948220
Change-Id: I800c9035806ba42038dab8a681755d0ce581a530
Test: Unit tests
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
f7a421c02d43c3289ca45f0d5ccdf8d27e605f5a 06-Oct-2015 Casey Dahlin <sadmac@google.com> Use parser to find array brackets

Change-Id: Ib93032113c92fe23e1a7e4ac9b990a065f2b5d19
Test: Unit tests, Full Android Rebuild
Bugs: 24680682
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
f2d23f7f05252fa1a06a8f95bd9475fa9d414c0c 03-Oct-2015 Casey Dahlin <sadmac@google.com> Kill comments token in AidlMethod

Change-Id: I3df6629eaa5b56093d2453269d4b138987bee7ce
Test: unit tests
Bug: 24410295
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
0ee3758e1f452a8bf99a5975b4f585035369d8fb 01-Oct-2015 Casey Dahlin <sadmac@google.com> Replace type_type struct with AidlType class

Change-Id: I642f55dba89681cd7dbf61880b4092c8d27050a6
Test: unit tests
Bug: 24410295
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
d127b50f07eed0cf78dfc956697031edea41043c 30-Sep-2015 Casey Dahlin <sadmac@google.com> Don't store AidlArgument name buffer_type

We now simply extract the string and store it sanely and destructably.

Test: unit tests
Bug: 24410295
Change-Id: I5a2588df688e019d66651a58ea5e5594de8a7e47
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
c378c9946ac42e225be4fe37d3b97e1b88a97304 30-Sep-2015 Casey Dahlin <sadmac@google.com> Stop storing the direction buffer

We pull the information out of the direction buffer_type immediately and pack
it safely in to privates where it can be accessed with sane accessors.

Test: unit tests
Bug: 24410295
Change-Id: I84e4cf50aad9202210fc9c3db5dd78858991ecd7
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
bc7a50a9bb4b97affc05f872d0cce02e54861e23 29-Sep-2015 Casey Dahlin <sadmac@google.com> Turn arg_type into a class called AIDLArgument

We also get rid of its linked list property and use std::vector to store lists
of arguments in method_type.

We still expose most of the same data publicly, but there's going to be a lot
of high-touch changes coming with this transition so it's better to break the
change set here.

Change-Id: I71a3dfe1e0fb9cd9437ec81de681b72137fc02cf
Test: unit tests
Bug: 24410295
Signed-off-by: Casey Dahlin <sadmac@google.com>
/system/tools/aidl/type_namespace.cpp
fb4b22dfbe0f87aaad492dc8a25201179c235bae 26-Sep-2015 Christopher Wiley <wiley@google.com> Explicitly create container types

Now we explicitly give ourselves a change to create each
container type before attempting to resolve a type name
to an instance of Type. In the process we finally remove
all knowledge of specific types from aidl.cpp by moving
logic into the TypeNamespace itself.

Bug: 24303749
Test: Compiles, unittests, clean build of aosp_arm passes.

Change-Id: Ie5e1b29020618863dac9417e0a60730ddb0dfc02
/system/tools/aidl/type_namespace.cpp