Generate all APIs.

This CL expands the generator to create all the .rsh files, not just
the core_math one.  To do so, processing of types (simple, struct, enums)
and constants was added.  .spec files corresponding to each .rsh file was
created.  Documentation was added.

This CL also generates HTML documentation files.  This generation will soon
be upgraded.

To make the code easier to expand, I've done fairly extensive refactoring.

In a subsequent CL, the APIs will be regrouped in different header files to
simplify learning the APIs.  In an other, the documentation generation will
be futher improved and incorporated in the actual online help.

Also removes rs_path & related functions.

Change-Id: I2c88554c9c6a8625233772b89e055fc6c4ad5da5
diff --git a/scriptc/rs_math.rsh b/scriptc/rs_math.rsh
index 0a0e688..b6b6ee0 100644
--- a/scriptc/rs_math.rsh
+++ b/scriptc/rs_math.rsh
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2015 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,95 +14,61 @@
  * limitations under the License.
  */
 
-/** @file rs_math.rsh
- *  \brief todo-jsams
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/gen_runtime.
+
+/*
+ * rs_math.rsh: TODO Add documentation
  *
- *  todo-jsams
+ * TODO Add documentation
+ */
+#ifndef RENDERSCRIPT_RS_MATH_RSH
+#define RENDERSCRIPT_RS_MATH_RSH
+
+/*
+ * rsClamp: Restrain a value to a range
  *
- */
-
-#ifndef __RS_MATH_RSH__
-#define __RS_MATH_RSH__
-
-
-/**
- * Return a random value between 0 (or min_value) and max_malue.
- */
-extern int __attribute__((overloadable))
-    rsRand(int max_value);
-/**
- * \overload
- */
-extern int __attribute__((overloadable))
-    rsRand(int min_value, int max_value);
-/**
- * \overload
- */
-extern float __attribute__((overloadable))
-    rsRand(float max_value);
-/**
- * \overload
- */
-extern float __attribute__((overloadable))
-    rsRand(float min_value, float max_value);
-
-/**
- * Returns the fractional part of a float
- */
-extern float __attribute__((const, overloadable))
-    rsFrac(float);
-
-
-/////////////////////////////////////////////////////
-// int ops
-/////////////////////////////////////////////////////
-
-/**
- * Clamp the value amount between low and high.
+ * Clamp a value between low and high.
  *
- * @param amount  The value to clamp
- * @param low
- * @param high
+ * Deprecated.  Use clamp() instead.
+ *
+ * Parameters:
+ *   amount The value to clamp
+ *   low Lower bound
+ *   high Upper bound
  */
-extern uint __attribute__((const, overloadable, always_inline)) rsClamp(uint amount, uint low, uint high);
+extern char __attribute__((const, always_inline, overloadable))
+    rsClamp(char amount, char low, char high);
 
-/**
- * \overload
- */
-extern int __attribute__((const, overloadable, always_inline)) rsClamp(int amount, int low, int high);
-/**
- * \overload
- */
-extern ushort __attribute__((const, overloadable, always_inline)) rsClamp(ushort amount, ushort low, ushort high);
-/**
- * \overload
- */
-extern short __attribute__((const, overloadable, always_inline)) rsClamp(short amount, short low, short high);
-/**
- * \overload
- */
-extern uchar __attribute__((const, overloadable, always_inline)) rsClamp(uchar amount, uchar low, uchar high);
-/**
- * \overload
- */
-extern char __attribute__((const, overloadable, always_inline)) rsClamp(char amount, char low, char high);
+extern uchar __attribute__((const, always_inline, overloadable))
+    rsClamp(uchar amount, uchar low, uchar high);
 
+extern short __attribute__((const, always_inline, overloadable))
+    rsClamp(short amount, short low, short high);
 
-/**
+extern ushort __attribute__((const, always_inline, overloadable))
+    rsClamp(ushort amount, ushort low, ushort high);
+
+extern int __attribute__((const, always_inline, overloadable))
+    rsClamp(int amount, int low, int high);
+
+extern uint __attribute__((const, always_inline, overloadable))
+    rsClamp(uint amount, uint low, uint high);
+
+/*
  * Computes 6 frustum planes from the view projection matrix
- * @param viewProj matrix to extract planes from
- * @param left plane
- * @param right plane
- * @param top plane
- * @param bottom plane
- * @param near plane
- * @param far plane
+ *
+ * Parameters:
+ *   viewProj matrix to extract planes from
+ *   left left plane
+ *   right right plane
+ *   top top plane
+ *   bottom bottom plane
+ *   near near plane
+ *   far far plane
  */
-__inline__ static void __attribute__((overloadable, always_inline))
-rsExtractFrustumPlanes(const rs_matrix4x4 *viewProj,
-                         float4 *left, float4 *right,
-                         float4 *top, float4 *bottom,
-                         float4 *near, float4 *far) {
+static inline void __attribute__((always_inline, overloadable))
+    rsExtractFrustumPlanes(const rs_matrix4x4* viewProj, float4* left, float4* right, float4* top,
+                           float4* bottom, float4* near, float4* far) {
     // x y z w = a b c d in the plane equation
     left->x = viewProj->m[3] + viewProj->m[0];
     left->y = viewProj->m[7] + viewProj->m[4];
@@ -148,22 +114,27 @@
     *far /= len;
 }
 
-/**
- * Checks if a sphere is withing the 6 frustum planes
- * @param sphere float4 representing the sphere
- * @param left plane
- * @param right plane
- * @param top plane
- * @param bottom plane
- * @param near plane
- * @param far plane
+/*
+ * Returns the fractional part of a float
  */
-__inline__ static bool __attribute__((overloadable, always_inline))
-rsIsSphereInFrustum(float4 *sphere,
-                      float4 *left, float4 *right,
-                      float4 *top, float4 *bottom,
-                      float4 *near, float4 *far) {
+extern float __attribute__((const, overloadable))
+    rsFrac(float v);
 
+/*
+ * Checks if a sphere is withing the 6 frustum planes
+ *
+ * Parameters:
+ *   sphere float4 representing the sphere
+ *   left left plane
+ *   right right plane
+ *   top top plane
+ *   bottom bottom plane
+ *   near near plane
+ *   far far plane
+ */
+static inline bool __attribute__((always_inline, overloadable))
+    rsIsSphereInFrustum(float4* sphere, float4* left, float4* right, float4* top, float4* bottom,
+                        float4* near, float4* far) {
     float distToCenter = dot(left->xyz, sphere->xyz) + left->w;
     if (distToCenter < -sphere->w) {
         return false;
@@ -191,61 +162,52 @@
     return true;
 }
 
-
-/**
- * Pack floating point (0-1) RGB values into a uchar4.  The alpha component is
- * set to 255 (1.0).
+/*
+ * Pack floating point (0-1) RGB values into a uchar4.
  *
- * @param r
- * @param g
- * @param b
- *
- * @return uchar4
+ * For the float3 variant and the variant that only specifies r, g, b,
+ * the alpha component is set to 255 (1.0).
  */
-extern uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float r, float g, float b);
+extern uchar4 __attribute__((const, overloadable))
+    rsPackColorTo8888(float r, float g, float b);
 
-/**
- * Pack floating point (0-1) RGBA values into a uchar4.
- *
- * @param r
- * @param g
- * @param b
- * @param a
- *
- * @return uchar4
+extern uchar4 __attribute__((const, overloadable))
+    rsPackColorTo8888(float r, float g, float b, float a);
+
+extern uchar4 __attribute__((const, overloadable))
+    rsPackColorTo8888(float3 color);
+
+extern uchar4 __attribute__((const, overloadable))
+    rsPackColorTo8888(float4 color);
+
+/*
+ * Return a random value between 0 (or min_value) and max_malue.
  */
-extern uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float r, float g, float b, float a);
+extern int __attribute__((overloadable))
+    rsRand(int max_value);
 
-/**
- * Pack floating point (0-1) RGB values into a uchar4.  The alpha component is
- * set to 255 (1.0).
- *
- * @param color
- *
- * @return uchar4
- */
-extern uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float3 color);
+extern int __attribute__((overloadable))
+    rsRand(int min_value, int max_value);
 
-/**
- * Pack floating point (0-1) RGBA values into a uchar4.
- *
- * @param color
- *
- * @return uchar4
- */
-extern uchar4 __attribute__((const, overloadable)) rsPackColorTo8888(float4 color);
+extern float __attribute__((overloadable))
+    rsRand(float max_value);
 
-/**
+extern float __attribute__((overloadable))
+    rsRand(float min_value, float max_value);
+
+/*
  * Unpack a uchar4 color to float4.  The resulting float range will be (0-1).
- *
- * @param c
- *
- * @return float4
  */
-extern float4 __attribute__((const)) rsUnpackColor8888(uchar4 c);
+extern float4 __attribute__((const))
+    rsUnpackColor8888(uchar4 c);
 
-extern uchar4 __attribute__((const, overloadable)) rsYuvToRGBA_uchar4(uchar y, uchar u, uchar v);
-extern float4 __attribute__((const, overloadable)) rsYuvToRGBA_float4(uchar y, uchar u, uchar v);
+/*
+ * Convert from YUV to RGBA.
+ */
+extern float4 __attribute__((const, overloadable))
+    rsYuvToRGBA_float4(uchar y, uchar u, uchar v);
 
+extern uchar4 __attribute__((const, overloadable))
+    rsYuvToRGBA_uchar4(uchar y, uchar u, uchar v);
 
-#endif
+#endif // RENDERSCRIPT_RS_MATH_RSH