[PPL-devel] [GIT] ppl/ppl(master): Allow for the Shape_Preserving_Product to be generated

Patricia Hill p.m.hill at leeds.ac.uk
Wed Apr 14 08:56:27 CEST 2010


Module: ppl/ppl
Branch: master
Commit: b51b3600e55ea768cab6fea39cf4009f8f9c9b81
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=b51b3600e55ea768cab6fea39cf4009f8f9c9b81

Author: Patricia Hill <p.m.hill at leeds.ac.uk>
Date:   Wed Apr 14 07:54:49 2010 +0100

Allow for the Shape_Preserving_Product to be generated
in the interfaces.

---

 instchk.hh                                       |    8 ++++++++
 interfaces/Prolog/Ciao/Makefile.am               |    6 +++++-
 interfaces/Prolog/GNU/Makefile.am                |    6 +++++-
 interfaces/Prolog/Prolog_interface.dox           |    5 +++--
 interfaces/Prolog/SICStus/Makefile.am            |    6 +++++-
 interfaces/Prolog/SWI/Makefile.am                |    6 +++++-
 interfaces/Prolog/XSB/Makefile.am                |    6 +++++-
 interfaces/Prolog/YAP/Makefile.am                |    6 +++++-
 interfaces/ppl_interface_generator_common_dat.m4 |    3 ++-
 9 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/instchk.hh b/instchk.hh
index 13c357d..0a07a08 100644
--- a/instchk.hh
+++ b/instchk.hh
@@ -377,4 +377,12 @@ public:
   }
 };
 
+template <typename D1, typename D2>
+class Shape_Preserving_Product {
+public:
+  static bool valid_instantiation() {
+    return D1::valid_Product_argument() && D2::valid_Product_argument();
+  }
+};
+
 } // namespace Parma_Polyhedra_Library
diff --git a/interfaces/Prolog/Ciao/Makefile.am b/interfaces/Prolog/Ciao/Makefile.am
index cfba3fc..2c6431a 100644
--- a/interfaces/Prolog/Ciao/Makefile.am
+++ b/interfaces/Prolog/Ciao/Makefile.am
@@ -143,7 +143,11 @@ nodist_EXTRA_libppl_ciao_la_SOURCES = \
 ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_NNC_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_Grid_C_Polyhedron.cc \
-../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc
+../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_C_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_NNC_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_C_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_NNC_Polyhedron.cc
 
 if NO_UNDEFINED
 
diff --git a/interfaces/Prolog/GNU/Makefile.am b/interfaces/Prolog/GNU/Makefile.am
index e99e385..962a9e1 100644
--- a/interfaces/Prolog/GNU/Makefile.am
+++ b/interfaces/Prolog/GNU/Makefile.am
@@ -138,7 +138,11 @@ nodist_EXTRA_libppl_gprolog_la_SOURCES = \
 ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_NNC_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_Grid_C_Polyhedron.cc \
-../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc
+../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_C_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_NNC_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_C_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_NNC_Polyhedron.cc
 
 if NO_UNDEFINED
 
diff --git a/interfaces/Prolog/Prolog_interface.dox b/interfaces/Prolog/Prolog_interface.dox
index f861f57..485b13f 100644
--- a/interfaces/Prolog/Prolog_interface.dox
+++ b/interfaces/Prolog/Prolog_interface.dox
@@ -106,8 +106,9 @@ on the use of the interface.
     a simple domain.
   - The product domains consist of
     Direct_Product_S_T,
-    Smash_Product_S_T and
-    Constraints_Product_S_T where S
+    Smash_Product_S_T,
+    Constraints_Product_S_T and
+    Shape_Preserving_Product_S_T where S
     and T are simple domains.
 - In the following, any of the above numerical
   abstract domains  is called a PPL <EM>domain</EM>
diff --git a/interfaces/Prolog/SICStus/Makefile.am b/interfaces/Prolog/SICStus/Makefile.am
index 6847542..06635db 100644
--- a/interfaces/Prolog/SICStus/Makefile.am
+++ b/interfaces/Prolog/SICStus/Makefile.am
@@ -172,7 +172,11 @@ nodist_EXTRA_libppl_sicstus_la_SOURCES = \
 ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_NNC_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_Grid_C_Polyhedron.cc \
-../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc
+../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_C_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_NNC_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_C_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_NNC_Polyhedron.cc
 
 if NO_UNDEFINED
 
diff --git a/interfaces/Prolog/SWI/Makefile.am b/interfaces/Prolog/SWI/Makefile.am
index 98dffed..6ad3907 100644
--- a/interfaces/Prolog/SWI/Makefile.am
+++ b/interfaces/Prolog/SWI/Makefile.am
@@ -159,7 +159,11 @@ nodist_EXTRA_libppl_swiprolog_la_SOURCES = \
 ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_NNC_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_Grid_C_Polyhedron.cc \
-../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc
+../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_C_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_NNC_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_C_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_NNC_Polyhedron.cc
 
 if NO_UNDEFINED
 
diff --git a/interfaces/Prolog/XSB/Makefile.am b/interfaces/Prolog/XSB/Makefile.am
index 514664f..43b49c4 100644
--- a/interfaces/Prolog/XSB/Makefile.am
+++ b/interfaces/Prolog/XSB/Makefile.am
@@ -161,7 +161,11 @@ nodist_EXTRA_libppl_xsb_la_SOURCES = \
 ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_NNC_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_Grid_C_Polyhedron.cc \
-../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc
+../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_C_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_NNC_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_C_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_NNC_Polyhedron.cc
 
 if NO_UNDEFINED
 
diff --git a/interfaces/Prolog/YAP/Makefile.am b/interfaces/Prolog/YAP/Makefile.am
index 469e24c..875bae9 100644
--- a/interfaces/Prolog/YAP/Makefile.am
+++ b/interfaces/Prolog/YAP/Makefile.am
@@ -157,7 +157,11 @@ nodist_EXTRA_ppl_yap_la_SOURCES = \
 ../ppl_prolog_Constraints_Product_C_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_NNC_Polyhedron_Grid.cc \
 ../ppl_prolog_Constraints_Product_Grid_C_Polyhedron.cc \
-../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc
+../ppl_prolog_Constraints_Product_Grid_NNC_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_C_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_NNC_Polyhedron_Grid.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_C_Polyhedron.cc \
+../ppl_prolog_Shape_Preserving_Product_Grid_NNC_Polyhedron.cc
 
 ppl_yap_la_LIBADD = \
 @required_instantiations_prolog_cxx_objects@ \
diff --git a/interfaces/ppl_interface_generator_common_dat.m4 b/interfaces/ppl_interface_generator_common_dat.m4
index 57cd897..f0f79be 100644
--- a/interfaces/ppl_interface_generator_common_dat.m4
+++ b/interfaces/ppl_interface_generator_common_dat.m4
@@ -480,7 +480,8 @@ m4_define(`m4_box_group',
    Uint8_Box, Uint16_Box, Uint32_Box, Uint64_Box')
 m4_define(`m4_pointset_powerset_group', Pointset_Powerset)
 m4_define(`m4_product_group',
-  `Direct_Product, Smash_Product, Constraints_Product')
+  `Direct_Product, Smash_Product, Constraints_Product,
+   Shape_Preserving_Product')
 
 dnl =====================================================================
 dnl ===== The next set of macros define the replacements            =====




More information about the PPL-devel mailing list