PolyBoRi
BooleConstant.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_BooleConstant_h_
17 #define polybori_BooleConstant_h_
18 
19 // include basic definitions
20 #include <polybori/pbori_defs.h>
21 
23 
41  public CTypes {
42 
43  typedef BooleConstant self;
44 
45 public:
47  typedef const self* const_iterator;
48 
50  BooleConstant(): m_value(false) {}
51 
53  BooleConstant(bool value): m_value(value) {}
54 
56  BooleConstant(short value): m_value(value % 2) {}
57 
59  BooleConstant(unsigned short value): m_value(value % 2) {}
60 
62  BooleConstant(int value): m_value(value % 2) {}
63 
65  BooleConstant(unsigned int value): m_value(value % 2) {}
66 
68  BooleConstant(long value): m_value(value % 2) {}
69 
71  BooleConstant(unsigned long value): m_value(value % 2) {}
72 
74  operator bool() const { return m_value; }
75 
77  BooleConstant operator!() const { return !m_value; }
78 
80  deg_type deg() const { return (m_value? 0: -1); }
81 
83  const_iterator orderedBegin() const { return this; }
84 
86  const_iterator orderedEnd() const { return this + (m_value? 1: 0); }
87 
89  const_iterator variableBegin() const { return this; }
90 
92  const_iterator variableEnd() const { return variableBegin(); }
93 
95 
96  bool isOne() const { return m_value; }
97  bool isZero() const { return !m_value; }
98  bool isConstant() const { return true; }
99  bool hasConstantPart() const { return isOne(); }
101 
102 protected:
104  const bool m_value;
105 };
106 
108 inline CTypes::ostream_type&
110  return (os << (int) rhs);
111 }
112 
113 inline BooleConstant
114 operator+(const BooleConstant& lhs, const BooleConstant& rhs) {
115  return lhs ^ rhs;
116 }
117 
118 inline BooleConstant
119 operator-(const BooleConstant& lhs, const BooleConstant& rhs) {
120  return lhs + rhs;
121 }
122 
123 inline BooleConstant
124 operator*(const BooleConstant& lhs, const BooleConstant& rhs) {
125  return lhs && rhs;
126 }
127 
129 
130 #endif // polybori_BooleConstant_h_
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
BooleConstant()
Default constructor.
Definition: BooleConstant.h:50
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
BooleConstant operator!() const
Negation operation.
Definition: BooleConstant.h:77
deg_type deg() const
Get constant degree.
Definition: BooleConstant.h:80
int deg_type
Type for polynomial degrees (ranges from -1 to maxint)
Definition: pbori_defs.h:222
BooleConstant(unsigned long value)
Constructor for unsigned long integer values (nontrivial conversion)
Definition: BooleConstant.h:71
BooleConstant operator-(const BooleConstant &lhs, const BooleConstant &rhs)
Definition: BooleConstant.h:119
bool isOne() const
Mimic constant monomial or polynmomial term.
Definition: BooleConstant.h:96
BooleConstant(unsigned short value)
Constructor for unsigned shoer integer values (nontrivial conversion)
Definition: BooleConstant.h:59
BooleConstant(unsigned int value)
Constructor for unsigned integer values (nontrivial conversion)
Definition: BooleConstant.h:65
std::ostream ostream_type
Type for out-stream.
Definition: pbori_defs.h:246
BooleConstant operator+(const BooleConstant &lhs, const BooleConstant &rhs)
Definition: BooleConstant.h:114
BooleConstant(short value)
Constructor for short integer values (nontrivial conversion)
Definition: BooleConstant.h:56
bool isConstant() const
Definition: BooleConstant.h:98
const bool m_value
Boolean value is stored as simple bool.
Definition: BooleConstant.h:104
const self * const_iterator
Define dummy iterator.
Definition: BooleConstant.h:47
bool isZero() const
Definition: BooleConstant.h:97
const_iterator orderedEnd() const
Finish polynomial-style iterations.
Definition: BooleConstant.h:86
const_iterator variableBegin() const
Start empty monomial iteration.
Definition: BooleConstant.h:89
BooleConstant(bool value)
constructor for bool values
Definition: BooleConstant.h:53
const_iterator variableEnd() const
Finish empty monomial iteration.
Definition: BooleConstant.h:92
BooleConstant(int value)
Constructor for integer values (nontrivial conversion)
Definition: BooleConstant.h:62
CTypes::ostream_type & operator<<(CTypes::ostream_type &os, const BooleConstant &rhs)
Stream output operator.
Definition: BooleConstant.h:109
BooleConstant operator*(const BooleConstant &lhs, const BooleConstant &rhs)
Definition: BooleConstant.h:124
This class wraps a bool value, which was not converted to a boolean polynomial or monomial yet...
Definition: BooleConstant.h:40
const_iterator orderedBegin() const
Start polynomial-style iterations.
Definition: BooleConstant.h:83
BooleConstant(long value)
Constructor for long integer values (nontrivial conversion)
Definition: BooleConstant.h:68
This struct contains type definitions to be used in library classes.
Definition: pbori_defs.h:269
bool hasConstantPart() const
Definition: BooleConstant.h:99