Remove outermost loop parameter.
[official-gcc/graphite-test-results.git] / libpcp / pcp_poly_spi.h
blobaeb2943091538fb10f1771824fee3031e0cc3991
1 // Copyright (C) 2009 Free Software Foundation, Inc.
2 // Contributed by Jan Sjodin <jan.sjodin@amd.com>.
4 // This file is part of the Polyhedral Compilation Package Library (libpcp).
6 // Libpcp is free software; you can redistribute it and/or modify it
7 // under the terms of the GNU Lesser General Public License as published by
8 // the Free Software Foundation; either version 2.1 of the License, or
9 // (at your option) any later version.
11 // Libpcp is distributed in the hope that it will be useful, but WITHOUT ANY
12 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
14 // more details.
16 // You should have received a copy of the GNU Lesser General Public License
17 // along with libpcp; see the file COPYING.LIB. If not, write to the
18 // Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 // MA 02110-1301, USA.
21 // As a special exception, if you link this library with other files, some
22 // of which are compiled with GCC, to produce an executable, this library
23 // does not by itself cause the resulting executable to be covered by the
24 // GNU General Public License. This exception does not however invalidate
25 // any other reasons why the executable file might be covered by the GNU
26 // General Public License.
28 #ifndef _PCP_POLY_SPI_
29 #define _PCP_POLY_SPI_
31 #include "pcp_dynamic_array.h"
33 class PcpPolySpi
35 public:
36 class Coefficient
40 class LinearExpr
44 class Constraint
48 class ConstraintSystem
52 class Polyhedron
56 class PointsetPowerset
60 // Coefficient primitives
61 virtual int coefficientGetValue(Coefficient* coeff) = 0;
62 virtual const char* coefficientToString(Coefficient* coeff) = 0;
64 virtual Coefficient* coefficientCreate(int value) = 0;
65 virtual void coefficientDestroy(Coefficient* coeff) = 0;
67 // Linear Expr Primitives
68 virtual LinearExpr* linearExprCopy(LinearExpr* linearExpr) = 0;
69 virtual void linearExprAddToCoefficient(LinearExpr* linearExpr, int dimension, Coefficient* value) = 0;
70 virtual void linearExprAddToInhomogenous(LinearExpr* linearExpr, Coefficient* value) = 0;
71 virtual void linearExprSetCoefficient(LinearExpr* linearExp, int dimension, Coefficient* value) = 0;
72 virtual int linearExprGetNumDimensions(LinearExpr* linearExpr) = 0;
73 virtual void linearExprSubtract(LinearExpr* linearExpr, LinearExpr* subtract) = 0;
74 virtual const char* linearExprToString(LinearExpr* linearExpr) = 0;
76 virtual LinearExpr* linearExprCreate() = 0;
77 virtual LinearExpr* linearExprCreate(int numDimensions) = 0;
78 virtual void linearExprDestroy(LinearExpr* linearExpr) = 0;
80 // Constraint primitives
81 virtual Constraint* constraintCreateEqualZero(LinearExpr* linearExpr) = 0;
82 virtual Constraint* constraintCreateGreaterEqualZero(LinearExpr* linearExpr) = 0;
83 virtual void constraintDestroy(Constraint* constraint) = 0;
84 virtual const char* constraintToString(Constraint* constraint) = 0;
86 // Polyhedron primitives
87 virtual ConstraintSystem* polyhedronGetConstraintSystem(Polyhedron* polyhedron) = 0;
88 virtual void polyhedronAddConstraint(Polyhedron* polyhedron, Constraint* constraint) = 0;
89 virtual void polyhedronAddConstraints(Polyhedron* polyhedron, ConstraintSystem* constraintSystem) = 0;
90 virtual void polyhedronRemap(Polyhedron* polyhedron, PcpArray<int>* map) = 0;
91 virtual Polyhedron* polyhedronCopy(Polyhedron* polyhedron) = 0;
93 virtual Polyhedron* polyhedronCreate(int numDimensions) = 0;
94 virtual void polyhedronDestroy(Polyhedron* polyhedron) = 0;
96 // PointsetPowerset primitives
97 virtual PointsetPowerset* pointsetPowersetCreate(Polyhedron* polyhedron) = 0;
98 virtual void pointsetPowersetDestroy(PointsetPowerset* poinsetPowerset) = 0;
100 static PcpPolySpi* create();
105 #endif // _PCP_POLY_SPI_