This patch provides C API for MLIR affine expression.
- Implement C API for methods of AffineExpr class.
- Implement C API for methods of derived classes (AffineBinaryOpExpr, AffineDimExpr, AffineSymbolExpr, and AffineConstantExpr).
- Expose IsA and Get methods for each affine binary operation expression.
I am strongly interested in changing this and not exposing the enum here, even though the C++ API does. To me, this feels like an early design iteration that was never migrated to the typeid/isa scheme. Could we remove this, the GetKind method and instead provide: mlirAffineExprIsADim, mlirAffineExprIsAFloorDiv for checking (including the top-level mlirAffineExprIsABinaryExpr that matches all binary expressions) and mlirAffineFoorDivExprGet etc. that match the already existing mlirAffineDimExprGet?
WDYT? @stellaraccident?