typedef SAF_Basis SAF_BasisConstants;
#define SAF_UNITY saf_find_basis_unity() /* The basis set with a single basis vector; {1} */
#define SAF_CARTESIAN saf_find_basis_cartesian() /* The basis set with /N/ basis vectors; {e0, e1, ..., eN} */
#define SAF_SPHERICAL saf_find_basis_spherical() /* The basis set with 3 basis vectors {r, theta, phi} */
#define SAF_CYLINDRICAL saf_find_basis_cylindrical() /* The basis set with 3 basis vectors {r, theta, h} */
#define SAF_UPPERTRI saf_find_basis_uppertri() /* The basis set of a symmetric tensor. Why do we need this if
* the algebraic type already captures it? */
#define SAF_VARIYING saf_find_basis_variable() /* For a basis that is varying over the base space. Often needed
* if the basis is derived from local surface behavior such as
* surface normals. Although, shouldn't we use something like
* SAF_SURFACE_NORMAL for that? */
#define SAF_ANY_BASIS NULL /* Wildcard for searching. */