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.h b/ScalarType.h
index fd9fb67..06892bf 100644
--- a/ScalarType.h
+++ b/ScalarType.h
@@ -78,6 +78,8 @@
 
     void getAlignmentAndSize(size_t *align, size_t *size) const override;
 
+    Kind getKind() const;
+
 private:
     Kind mKind;