From b284ace68ac680690d81afc57fe3dfd16fbb8387 Mon Sep 17 00:00:00 2001
From: Daniel Maier <daniel.maier@tu-berlin.de>
Date: Wed, 12 Sep 2018 15:53:52 +0200
Subject: [PATCH] working and configurable perforation

---
 main.cpp | 44 ++++++++++++++++++++++++++++++++------------
 1 file changed, 32 insertions(+), 12 deletions(-)

diff --git a/main.cpp b/main.cpp
index 06769e1..863a1a4 100644
--- a/main.cpp
+++ b/main.cpp
@@ -17,30 +17,50 @@ perforate(osl_relation_p rel, int i) {
     osl_relation_dump(stdout, rel);
 }
 
-int main() {
-    osl_scop_p scop;
+int main(int argc, char *argv[]) {
+    if(argc != 5) {
+        std::cerr << "usage: <INPUT SCOP> <OUTPUT SCOP> <STATEMENT> <ITERATOR>\n";
+        return -1;
+    }
 
+    int statement = atoi(argv[3]);
+    int iterator = atoi(argv[4]);
 
-    FILE *fp = fopen("acc.openscop", "r");
+    auto *fp = fopen(argv[1], "r");
     if(!fp) {
         std::cerr << "openscop read failed\n";
         return -1;
     }
-    scop = osl_scop_read(fp);
+    auto scop = osl_scop_read(fp);
     fclose(fp);
     
-    for(auto s = scop->statement; s; s = s->next) {
-        auto d = s->domain;
-        
-        osl_relation_dump(stdout, s->domain);
-        perforate(d);
-        //s->domain = n;
+    /* find statement */
+    int i = statement;
+    auto s = scop->statement;
+    for(; s && i; s = s->next) {
+        i--;
+    }
+
+    if(i || !s) {
+        std::cerr << "statement not found\n";
+        return -1;
+    }
 
-        //osl_relation_free(d);
+    osl_relation_dump(stdout, s->domain);
 
+    std::cout << "nb_output_dims " << s->domain->nb_output_dims << " iterator " << iterator << "\n";
+    if(s->domain->nb_output_dims <= iterator) {
+        std::cerr << "iterator not found\n";
+        return -1;
     }
+
+    perforate(s->domain, iterator);
     
-    fp = fopen("perf.openscop", "w");
+    fp = fopen(argv[2], "w");
+    if(!fp) {
+        std::cerr << "openscop write failed\n";
+        return -1;
+    }
     osl_scop_print(fp, scop);
     fclose(fp);
 
-- 
GitLab