diff --git a/isl/interface/scala.cc b/isl/interface/scala.cc index 3f9534e..23efa16 100644 --- a/isl/interface/scala.cc +++ b/isl/interface/scala.cc @@ -182,8 +182,14 @@ std::string scala_generator::prototype_to_scala(const FunctionProtoType *ft) { std::string scala_generator::isl_type_to_scala(const QualType &type, const bool for_jni) { // TODO ENUMS CLEAER - if (type.getAsString().substr(0, 5) == "enum ") + if (type.getAsString().substr(0, 5) == "enum ") { + auto enum_name = type.getAsString().substr(5); + if(enum_name == "isl_dim_type") { + return for_jni ? "Int" : "DimType"; + } + std::cerr << "Warning: interpreting `" << type.getAsString() << "` as an Int!" << std::endl; return "Int"; + } if (type.getAsString() == "isl_bool") return "Int"; if (type.getAsString() == "isl_bool *") diff --git a/src/main/scala-3/Definitions.scala b/src/main/scala-3/Definitions.scala new file mode 100644 index 0000000..421a231 --- /dev/null +++ b/src/main/scala-3/Definitions.scala @@ -0,0 +1,13 @@ +package com.github.papychacal.isl + +private[isl] given Conversion[DimType, Int] = _.ordinal +private[isl] given Conversion[Int, DimType] = DimType.fromOrdinal + +enum DimType: + case Cst + case Param + case In + case Out + case Div + case All + diff --git a/src/main/scala-3/isl.scala b/src/main/scala-3/ISL.scala similarity index 93% rename from src/main/scala-3/isl.scala rename to src/main/scala-3/ISL.scala index 58d5964..3c28a9e 100644 --- a/src/main/scala-3/isl.scala +++ b/src/main/scala-3/ISL.scala @@ -1,6 +1,6 @@ import com.github.papychacal.isl.* -object ISL: +object Example: def main(args: Array[String]): Unit = given ctx: Ctx = Ctx()