/usr/include/coin/MP_boolean.hpp is in coinor-libflopc++-dev 1.0.6-3.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | // ******************** FlopCpp **********************************************
// File: MP_boolean.hpp
// $Id$
// Author: Tim Helge Hultberg (thh@mat.ua.pt)
// Copyright (C) 2003 Tim Helge Hultberg
// All Rights Reserved.
// ****************************************************************************
#ifndef _MP_boolean_hpp_
#define _MP_boolean_hpp_
#include <vector>
using std::vector;
#include "MP_index.hpp"
namespace flopc {
class SUBSETREF;
/// @ingroup INTERNAL_USE
class Boolean_base {
friend class Handle<Boolean_base*>;
friend class MP_boolean;
public:
virtual bool evaluate() const = 0;
protected:
Boolean_base() : count(0) {}
virtual ~Boolean_base() {}
int count;
};
/** @brief Reference counted class for all "boolean" types of data.
@ingroup PublicInterface
This contains counters to ConstantBase pointers.
These pointers may be of any of the Boolean_base * type.
This can be a constant valued boolean as well.
@TODO explain SUBSETREF
*/
class MP_boolean : public Handle<Boolean_base*> {
public:
MP_boolean() : Handle<Boolean_base*>(0) {}
MP_boolean(bool b);
MP_boolean(const Constant& c);
MP_boolean(SUBSETREF& c);
MP_boolean(Boolean_base* r) : Handle<Boolean_base*>(r) {}
};
////////// Operators creating MP_boolean expressions /////////////////////
/** @brief For computing the logical negation of a boolean
@ingroup PublicInterface
This is used in the normal formation of an expression.
@param b boolean
@returns A boolean which evaluates to the negation of the input expression.
@todo true? haven't used it.
*/
MP_boolean operator!(const MP_boolean& b);
/** @brief For computing the logical AND of two booleans
@ingroup PublicInterface
This is used in the normal formation of an expression.
@param e1 first boolean
@param e2 second boolean
@returns A boolean which evaluates to true of both booleans are true.
@todo true? haven't used it.
*/
MP_boolean operator&&(const MP_boolean& e1, const MP_boolean& e2);
/** @brief For computing the logical OR of two booleans
@ingroup PublicInterface
This is used in the normal formation of an expression.
@param e1 first boolean
@param e2 second boolean
@returns A boolean which evaluates to true if either booleans are true.
@todo true? haven't used it.
*/
MP_boolean operator||(const MP_boolean& e1, const MP_boolean& e2);
// /** @brief boolean which returns true if all in domain evaluate to true.
// @ingroup PublicInterface
// This is used in the normal formation of an expression.
// @param d MP_domain to evaluate with
// @param b boolean expression to evaluate.
// @returns A boolean which evaluates to true all domain evaluations of the boolean
// evaluate to true.
// */
// MP_boolean alltrue(const MP_domain& d, const MP_boolean& b);
/** @brief constructs a boolean evaluator using operator overloading
@ingroup PublicInterface
This is used in the normal formation of an expression.
This is useful when combining index expressions.
@param e1 is an index expression
@param e2 second index expression
@li used in forming sets of tuples of index values, or subsets.
@todo improve this a bit?
The brief code below is a bit contrived, but the right hand side
illustrate the utility of combining an index expression.
<code>
MP_index i;
<br>MP_index j;
<br>MP_boolean &b = (i+5)<=(j);
</code>
*/
MP_boolean operator<=(const MP_index_exp& e1, const MP_index_exp& e2);
/** @brief constructs a boolean evaluator by comparing two constants.
@ingroup PublicInterface
This is used in the normal formation of an expression.
This utility of this is when comparing constants
@param e1 first constant expression
@param e2 second constant expression
*/
MP_boolean operator<=(const Constant& e1, const Constant& e2);
/** @brief constructs a boolean evaluator using operator overloading
@ingroup PublicInterface
This is used in the normal formation of an expression.
This is useful when combining index expressions.
@param e1 is an index expression involving an MP_index
@param e2 second index expression
@li used in forming sets of tuples of index values, or subsets.
@todo improve this a bit?
*/
MP_boolean operator<(const MP_index_exp& e1, const MP_index_exp& e2);
/** @brief constructs a boolean evaluator by comparing two constants.
@ingroup PublicInterface
This is used in the normal formation of an expression.
This utility of this is when comparing constants
@param e1 first constant expression
@param e2 second constant expression
*/
MP_boolean operator<(const Constant& e1, const Constant& e2);
/** @brief constructs a boolean evaluator using operator overloading
@ingroup PublicInterface
This is used in the normal formation of an expression.
This is useful when combining index expressions.
@param e1 is an index expression involving an MP_index
@param e2 second index expression
@li used in forming sets of tuples of index values, or subsets.
@todo improve this a bit?
*/
MP_boolean operator>=(const MP_index_exp& e1, const MP_index_exp& e2);
/** @brief constructs a boolean evaluator by comparing two constants.
@ingroup PublicInterface
This is used in the normal formation of an expression.
This utility of this is when comparing constants
@param e1 first constant expression
@param e2 second constant expression
*/
MP_boolean operator>=(const Constant& e1, const Constant& e2);
/** @brief constructs a boolean evaluator using operator overloading
@ingroup PublicInterface
This is used in the normal formation of an expression.
This is useful when combining index expressions.
@param e1 is an index expression involving an MP_index
@param e2 second index expression
@li used in forming sets of tuples of index values, or subsets.
@todo improve this a bit?
*/
MP_boolean operator>(const MP_index_exp& e1, const MP_index_exp& e2);
/** @brief constructs a boolean evaluator by comparing two constants.
@ingroup PublicInterface
This is used in the normal formation of an expression.
This utility of this is when comparing constants
@param e1 first constant expression
@param e2 second constant expression
*/
MP_boolean operator>(const Constant& e1, const Constant& e2);
/** @brief constructs a boolean evaluator using operator overloading
@ingroup PublicInterface
This is used in the normal formation of an expression.
This is useful when combining index expressions.
@param e1 is an index expression involving an MP_index
@param e2 second index expression
@li used in forming sets of tuples of index values, or subsets.
@todo improve this a bit?
*/
MP_boolean operator==(const MP_index_exp& e1, const MP_index_exp& e2);
/** @brief constructs a boolean evaluator by comparing two constants.
@ingroup PublicInterface
This is used in the normal formation of an expression.
This utility of this is when comparing constants
@param e1 first constant expression
@param e2 second constant expression
*/
MP_boolean operator==(const Constant& e1, const Constant& e2);
/** @brief constructs a boolean evaluator using operator overloading
@ingroup PublicInterface
This is used in the normal formation of an expression.
This is useful when combining index expressions.
@param e1 is an index expression involving an MP_index
@param e2 second index expression
@li used in forming sets of tuples of index values, or subsets.
@todo improve this a bit?
*/
MP_boolean operator!=(const MP_index_exp& e1, const MP_index_exp& e2);
/** @brief constructs a boolean evaluator by comparing two constants.
@ingroup PublicInterface
This is used in the normal formation of an expression.
This utility of this is when comparing constants
@param e1 first constant expression
@param e2 second constant expression
*/
MP_boolean operator!=(const Constant& e1, const Constant& e2);
} // End of namespace flopc
#endif
|