From 4136bfdd11547aa83b30f44b3f8bbecb1af8e03a Mon Sep 17 00:00:00 2001 From: Emilien Bauer Date: Tue, 24 Jun 2025 16:41:48 +0100 Subject: [PATCH 1/2] Provide custom enum for Dim... --- isl/interface/scala.cc | 8 +++++++- src/main/scala-3/Definitions.scala | 13 +++++++++++++ src/main/scala-3/{isl.scala => ISL.scala} | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/main/scala-3/Definitions.scala rename src/main/scala-3/{isl.scala => ISL.scala} (93%) diff --git a/isl/interface/scala.cc b/isl/interface/scala.cc index 3f9534e..84e4bf8 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" : "Dim"; + } + 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..978ecf2 --- /dev/null +++ b/src/main/scala-3/Definitions.scala @@ -0,0 +1,13 @@ +package com.github.papychacal.isl + +private[isl] given Conversion[Dim, Int] = _.ordinal +private[isl] given Conversion[Int, Dim] = Dim.fromOrdinal + +enum Dim: + 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() From 86ad96b5a56b251c56cb152744a4ae77149334cf Mon Sep 17 00:00:00 2001 From: Emilien Bauer Date: Tue, 24 Jun 2025 16:43:36 +0100 Subject: [PATCH 2/2] Tweaks --- isl/interface/scala.cc | 2 +- src/main/scala-3/Definitions.scala | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/isl/interface/scala.cc b/isl/interface/scala.cc index 84e4bf8..23efa16 100644 --- a/isl/interface/scala.cc +++ b/isl/interface/scala.cc @@ -185,7 +185,7 @@ std::string scala_generator::isl_type_to_scala(const QualType &type, const bool if (type.getAsString().substr(0, 5) == "enum ") { auto enum_name = type.getAsString().substr(5); if(enum_name == "isl_dim_type") { - return for_jni ? "Int" : "Dim"; + return for_jni ? "Int" : "DimType"; } std::cerr << "Warning: interpreting `" << type.getAsString() << "` as an Int!" << std::endl; return "Int"; diff --git a/src/main/scala-3/Definitions.scala b/src/main/scala-3/Definitions.scala index 978ecf2..421a231 100644 --- a/src/main/scala-3/Definitions.scala +++ b/src/main/scala-3/Definitions.scala @@ -1,9 +1,9 @@ package com.github.papychacal.isl -private[isl] given Conversion[Dim, Int] = _.ordinal -private[isl] given Conversion[Int, Dim] = Dim.fromOrdinal +private[isl] given Conversion[DimType, Int] = _.ordinal +private[isl] given Conversion[Int, DimType] = DimType.fromOrdinal -enum Dim: +enum DimType: case Cst case Param case In