Evaluate constant expressions.

* The rules for evaluating constant expressions are very much
like that in C/C++, in which (u)int32_t are treated as
(unsigned) int and (u)int64_t are treated as (unsigned) long.

* Detailed rules can be found at the end of ConstantExpression.cpp.

* Only bool and integer types are evaluated. float, double
are not evaluated (not even parsed; so a syntax error will
be raised).

* Const-declared identifiers are parsed, but not evaluated.

* Only evaluate expressions for enum types. Array length and
annotation parameter values are not evaluated.

* Original expression is formatted and placed as a trailing comment
(only available in C++ format).

* Tests can be found at Icacba6b6262cc0026a94f64527b80e2c0e35e72e.

Change-Id: Ia33b68a053727747ec87b0e77c361ca19c9f41fd
diff --git a/ScalarType.cpp b/ScalarType.cpp
index ffac447..f751ae6 100644
--- a/ScalarType.cpp
+++ b/ScalarType.cpp
@@ -245,5 +245,9 @@
     *align = *size = kAlign[mKind];
 }
 
+ScalarType::Kind ScalarType::getKind() const {
+    return mKind;
+}
+
 }  // namespace android