[PPL-devel] [GIT] ppl/ppl(floating_point): Started drafting the classes to be used withing the PPL for testing purposes .
Roberto Bagnara
bagnara at cs.unipr.it
Sun Jul 4 14:13:18 CEST 2010
Module: ppl/ppl
Branch: floating_point
Commit: 0e4329676d8e481e3fa96cada83f3701ac91039a
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=0e4329676d8e481e3fa96cada83f3701ac91039a
Author: Roberto Bagnara <bagnara at cs.unipr.it>
Date: Sun Jul 4 14:11:14 2010 +0200
Started drafting the classes to be used withing the PPL for testing purposes.
---
src/Concrete_Expression.defs.hh | 2 +-
src/Concrete_Expression.types.hh | 2 +-
src/Makefile.am | 2 +
tests/Concrete_Expression/C_Expr.cc | 31 +++++++
tests/Concrete_Expression/C_Expr.defs.hh | 131 +++++++++++++++++++++++++++
tests/Concrete_Expression/C_Expr.inlines.hh | 40 ++++++++
tests/Concrete_Expression/C_Expr.types.hh | 27 ++++++
tests/Concrete_Expression/Makefile.am | 21 +++--
8 files changed, 245 insertions(+), 11 deletions(-)
diff --git a/src/Concrete_Expression.defs.hh b/src/Concrete_Expression.defs.hh
index 1324389..2666d2b 100644
--- a/src/Concrete_Expression.defs.hh
+++ b/src/Concrete_Expression.defs.hh
@@ -63,6 +63,6 @@ class Approximable_Reference_Base : public Concrete_Expression<Target> {
} // namespace Parma_Polyhedra_Library
-#include "Concrete_Expression.inlines.hh"
+//#include "Concrete_Expression.inlines.hh"
#endif // !defined(PPL_Concrete_Expression_defs_hh)
diff --git a/src/Concrete_Expression.types.hh b/src/Concrete_Expression.types.hh
index 9666319..6fe20eb 100644
--- a/src/Concrete_Expression.types.hh
+++ b/src/Concrete_Expression.types.hh
@@ -42,7 +42,7 @@ class Floating_Point_Constant;
template <typename Target>
class Approximable_Reference;
-enum Concrete_Expression_Type = {
+enum Concrete_Expression_Type {
// To be defined with all the floating point formats and using
// Bounded_Integer_Type_Width, Bounded_Integer_Type_Representation
// and Bounded_Integer_Type_Overflow.
diff --git a/src/Makefile.am b/src/Makefile.am
index f89fd67..53e9a1c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -122,6 +122,8 @@ mp_std_bits.inlines.hh \
Proxy.types.hh \
Proxy.defs.hh \
Proxy.inlines.hh \
+Concrete_Expression.types.hh \
+Concrete_Expression.defs.hh \
Temp.defs.hh \
Temp.inlines.hh \
Temp.templates.hh \
diff --git a/tests/Concrete_Expression/C_Expr.cc b/tests/Concrete_Expression/C_Expr.cc
new file mode 100644
index 0000000..4dbaec6
--- /dev/null
+++ b/tests/Concrete_Expression/C_Expr.cc
@@ -0,0 +1,31 @@
+/* Definitions for the C_Expr class and its subclasses: non-inline,
+ non-template functions.
+ Copyright (C) 2001-2010 Roberto Bagnara <bagnara at cs.unipr.it>
+
+This file is part of the Parma Polyhedra Library (PPL).
+
+The PPL is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The PPL is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
+
+For the most up-to-date information see the Parma Polyhedra Library
+site: http://www.cs.unipr.it/ppl/ . */
+
+#include "ppl_test.hh"
+
+#include "C_Expr.defs.hh"
+
+int
+main() {
+ return 0;
+}
diff --git a/tests/Concrete_Expression/C_Expr.defs.hh b/tests/Concrete_Expression/C_Expr.defs.hh
new file mode 100644
index 0000000..95042a7
--- /dev/null
+++ b/tests/Concrete_Expression/C_Expr.defs.hh
@@ -0,0 +1,131 @@
+/* Declarations for the C_Expr class and its subclasses.
+ Copyright (C) 2001-2010 Roberto Bagnara <bagnara at cs.unipr.it>
+
+This file is part of the Parma Polyhedra Library (PPL).
+
+The PPL is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The PPL is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
+
+For the most up-to-date information see the Parma Polyhedra Library
+site: http://www.cs.unipr.it/ppl/ . */
+
+#ifndef PPL_C_Expr_defs_hh
+#define PPL_C_Expr_defs_hh 1
+
+#include "C_Expr.types.hh"
+#include "Concrete_Expression.types.hh"
+#include "Proxy.defs.hh"
+
+namespace Parma_Polyhedra_Library {
+
+class C_Expr {
+ //! Returns the type of \p *this.
+ virtual Concrete_Expression_Type type() const = 0;
+
+ //! Returns the kind of \p *this.
+ virtual Concrete_Expression_Kind kind() const = 0;
+};
+
+class Bin_Op : public C_Expr {
+public:
+ //! Returns the type of \p *this.
+ Concrete_Expression_Type type() const;
+
+ //! Returns the kind of \p *this.
+ Concrete_Expression_Kind kind() const;
+
+ //! Returns the left-hand side of \p *this.
+ const C_Expr* left_hand_side() const;
+
+ //! Returns the right-hand side of \p *this.
+ const C_Expr* right_hand_side() const;
+
+private:
+ //! The left-hand side of \p *this.
+ const C_Expr* lhs;
+
+ //! The right-hand side of \p *this.
+ const C_Expr* rhs;
+};
+
+class Un_Op : public C_Expr {
+};
+
+class Cast_Op : public C_Expr {
+};
+
+class Int_Const : public C_Expr {
+};
+
+class Float_Const : public C_Expr {
+};
+
+class Appr_Ref : public C_Expr {
+};
+
+struct PPL_C_Expr;
+
+template <>
+struct Underlying_To_Exposed<PPL_C_Expr, C_Expr> {
+ typedef Concrete_Expression<PPL_C_Expr> Type;
+};
+
+template <>
+struct Underlying_To_Exposed<PPL_C_Expr, Bin_Op> {
+ typedef Binary_Operator<PPL_C_Expr> Type;
+};
+
+template<>
+struct Exposed_To_Underlying<PPL_C_Expr, Concrete_Expression<PPL_C_Expr> > {
+ typedef C_Expr Type;
+};
+
+template<>
+struct Exposed_To_Underlying<PPL_C_Expr, Binary_Operator<PPL_C_Expr> > {
+ typedef Bin_Op Type;
+};
+
+template <>
+class Concrete_Expression<PPL_C_Expr>
+ : public Concrete_Expression_Base<PPL_C_Expr>,
+ public Proxy<PPL_C_Expr> {
+private:
+ typedef Exposed_To_Underlying<PPL_C_Expr,
+ Concrete_Expression<PPL_C_Expr> >::Type
+ Underlying;
+
+public:
+#if 0
+ template <typename T>
+ static bool classof(const T* expr) {
+ return Underlying::classof(underlying(expr));
+ }
+#endif
+};
+
+template <>
+class Binary_Operator<PPL_C_Expr>
+ : public Binary_Operator_Base<PPL_C_Expr> {
+public:
+ const Concrete_Expression<PPL_C_Expr>* get_lhs() {
+ return exposed(underlying(this)->left_hand_side());
+ }
+};
+
+} // namespace Parma_Polyhedra_Library
+
+#include "C_Expr.inlines.hh"
+//#include "C_Expr.templates.hh"
+
+#endif // !defined(PPL_C_Expr_defs_hh)
diff --git a/tests/Concrete_Expression/C_Expr.inlines.hh b/tests/Concrete_Expression/C_Expr.inlines.hh
new file mode 100644
index 0000000..47f35b5
--- /dev/null
+++ b/tests/Concrete_Expression/C_Expr.inlines.hh
@@ -0,0 +1,40 @@
+/* Definitions for the C_Expr class and its subclasses: inline functions.
+ Copyright (C) 2001-2010 Roberto Bagnara <bagnara at cs.unipr.it>
+
+This file is part of the Parma Polyhedra Library (PPL).
+
+The PPL is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3 of the License, or (at your
+option) any later version.
+
+The PPL is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
+
+For the most up-to-date information see the Parma Polyhedra Library
+site: http://www.cs.unipr.it/ppl/ . */
+
+#ifndef PPL_C_Expr_inlines_hh
+#define PPL_C_Expr_inlines_hh 1
+
+namespace Parma_Polyhedra_Library {
+
+inline const C_Expr*
+Bin_Op::left_hand_side() const {
+ return lhs;
+}
+
+inline const C_Expr*
+Bin_Op::right_hand_side() const {
+ return rhs;
+}
+
+} // namespace Parma_Polyhedra_Library
+
+#endif // !defined(PPL_C_Expr_inlines_hh)
diff --git a/tests/Concrete_Expression/C_Expr.types.hh b/tests/Concrete_Expression/C_Expr.types.hh
new file mode 100644
index 0000000..60371dc
--- /dev/null
+++ b/tests/Concrete_Expression/C_Expr.types.hh
@@ -0,0 +1,27 @@
+/* Copyright (C) 2001-2010 Roberto Bagnara <bagnara at cs.unipr.it>
+
+This file is free software; as a special exception the author gives
+unlimited permission to copy and/or distribute it, with or without
+modifications, as long as this notice is preserved.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE. */
+
+#ifndef PPL_C_Expr_types_hh
+#define PPL_C_Expr_types_hh 1
+
+namespace Parma_Polyhedra_Library {
+
+class C_Expr;
+class Bin_Op;
+class Un_Op;
+class Cast_Op;
+class Int_Const;
+class Float_Const;
+class Appr_Ref;
+
+} // namespace Parma_Polyhedra_Library
+
+#endif // !defined(PPL_C_Expr_types_hh)
diff --git a/tests/Concrete_Expression/Makefile.am b/tests/Concrete_Expression/Makefile.am
index 55a958c..c433cad 100644
--- a/tests/Concrete_Expression/Makefile.am
+++ b/tests/Concrete_Expression/Makefile.am
@@ -51,15 +51,16 @@ $(top_builddir)/src/libppl.la \
@extra_libraries@
ORIGINAL_TESTS = \
-bdshape1 \
-bdshape2 \
-digitalfilters1 \
-floatingpointexpr1 \
-linearform1 \
-octagonalshape1 \
-octagonalshape2 \
-polyhedron1 \
-polyhedron2
+C_Expr
+#bdshape1 \
+#bdshape2 \
+#digitalfilters1 \
+#floatingpointexpr1 \
+#linearform1 \
+#octagonalshape1 \
+#octagonalshape2 \
+#polyhedron1 \
+#polyhedron2
DERIVED_TESTS =
@@ -129,6 +130,8 @@ print_INSTANCES:
# Sources for the tests
#
+C_Expr_SOURCES = C_Expr.defs.hh C_Expr.inlines.hh C_Expr.cc
+
bdshape1_SOURCES = bdshape1.cc
bdshape2_SOURCES = bdshape2.cc
More information about the PPL-devel
mailing list