Support @FixedSized annotation for structured parcelables

This annotation marks the parcelable as fixed size so it can be
guaranteed to stay the same size.
This can be particularly useful for passing these types over shared
memory between processes that are updated independently. No matter which
version either process is using, the type will have the same size.

Test: atest aidl_unittests
Bug: 142326204

Change-Id: I18240e2832da8578bee077026955686ec90c0e5f
diff --git a/aidl_language.h b/aidl_language.h
index 7a53332..74ef07d 100644
--- a/aidl_language.h
+++ b/aidl_language.h
@@ -167,6 +167,7 @@
     JAVA_PASSTHROUGH,
     JAVA_DEBUG,
     JAVA_ONLY_IMMUTABLE,
+    FIXED_SIZE,
   };
   static std::string TypeToString(Type type);
 
@@ -231,6 +232,7 @@
   bool IsUtf8InCpp() const;
   bool IsVintfStability() const;
   bool IsJavaOnlyImmutable() const;
+  bool IsFixedSize() const;
   bool IsStableApiParcelable(Options::Language lang) const;
   bool IsHide() const;
   bool IsJavaDebug() const;