From e8f9830546197596dd95723fa1015273465b9b72 Mon Sep 17 00:00:00 2001
From: Daniel Maier <daniel.maier@tu-berlin.de>
Date: Wed, 12 Sep 2018 14:41:14 +0200
Subject: [PATCH] new perforation function

---
 main.cpp | 39 +++++++++++++++++----------------------
 1 file changed, 17 insertions(+), 22 deletions(-)

diff --git a/main.cpp b/main.cpp
index c85881e..b61d742 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,25 +1,20 @@
 #include <iostream>
 #include <osl/osl.h>
 
-osl_relation_p
-perforate(osl_relation_p r) {
-    /* first: add one dimension */
-    std::cout << "extending to " << r->nb_output_dims+1 << "\n";
-    auto n = osl_relation_extend_output(r, r->nb_output_dims+1);
-
-    /* second: find new colum */
-    auto row = n->m[n->nb_rows-1];
-    int col = 0;
-    for(; osl_int_get_si(n->precision, row[col]) == 0 && col < n->nb_rows; col++) { }
-
-    /* third: set equal, iterator -1, new thing 2 */
-    osl_int_set_si(n->precision, &row[col], 2);
-    osl_int_set_si(n->precision, &row[1], -1);
-    osl_relation_dump(stdout, n);
-
-    int x = osl_int_get_si(r->precision, row[col]);
-    std::cout << "here is x: " << x << "\n";
-    return n;
+void
+perforate(osl_relation_p rel) {
+    int r = rel->nb_rows;
+    int c = rel->nb_columns-2;
+
+    osl_relation_insert_blank_row(rel, r);
+    osl_relation_insert_blank_column(rel, c);
+    rel->nb_local_dims++;
+
+    auto row = rel->m[r];
+    osl_int_set_si(rel->precision, &row[c], 2);
+    osl_int_set_si(rel->precision, &row[1], -1);
+
+    osl_relation_dump(stdout, rel);
 }
 
 int main() {
@@ -38,10 +33,10 @@ int main() {
         auto d = s->domain;
         
         osl_relation_dump(stdout, s->domain);
-        auto n = perforate(d);
-        s->domain = n;
+        perforate(d);
+        //s->domain = n;
 
-        osl_relation_free(d);
+        //osl_relation_free(d);
 
     }
     
-- 
GitLab