Resolve constant expressions for external constants.

* Allow constant expressions to be used as array sizes
  and as annotation values.

Bug: 31592132 allow constant expressions to be used as array sizes.
Bug: 31628863 Autofill values for enum type

Test: `make android.hardware.tests.expression@1.0` compiles
  and generates enum class Color with autofilled values.
Test: `make hidl_test_java` succeeds.
Test: `make hidl_test && adb sync && adb shell hidl_test` succeeds.
Test: `mma`

Change-Id: I57377ec608503d4741d305e98144264b07973055
diff --git a/Annotation.h b/Annotation.h
index fc9b663..f2826a0 100644
--- a/Annotation.h
+++ b/Annotation.h
@@ -22,6 +22,8 @@
 #include <map>
 #include <string>
 
+#include "ConstantExpression.h"
+
 namespace android {
 
 struct Formatter;
@@ -29,6 +31,8 @@
 struct AnnotationParam {
     AnnotationParam(const std::string &name,
                     std::vector<std::string> *values);
+    AnnotationParam(const std::string &name,
+                    std::vector<ConstantExpression *> *values);
 
     const std::string &getName() const;
     const std::vector<std::string> *getValues() const;