Frobby  0.9.0
SquareFreeIdeal.h
Go to the documentation of this file.
1 /* Frobby: Software for monomial ideal computations.
2  Copyright (C) 2011 Bjarke Hammersholt Roune (www.broune.com)
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see http://www.gnu.org/licenses/.
16 */
17 #ifndef SQUARE_FREE_IDEAL_GUARD
18 #define SQUARE_FREE_IDEAL_GUARD
19 
20 #include "VarNames.h"
21 #include "RawSquareFreeIdeal.h"
22 class BigIdeal;
23 
25  public:
27  SquareFreeIdeal(const SquareFreeIdeal& ideal, size_t capacity);
28  SquareFreeIdeal(const BigIdeal& ideal);
30 
31  SquareFreeIdeal& operator=(const BigIdeal& ideal);
32 
33  void minimize();
34  void renameVars(const VarNames& names);
35  void insert(Word* term);
36  void insertIdentity();
37 
39  bool insert(const std::vector<std::string>& term);
40 
43 
44  void clear();
45  void swap(SquareFreeIdeal& ideal);
46  void reserve(size_t capacity);
47 
48  const VarNames& getNames() const {return _names;}
49  size_t getVarCount() const;
50  size_t getGeneratorCount() const;
51  size_t getCapacity() const {return _capacity;}
52 
53  Word* back() {return _ideal->back();}
54  const Word* back() const {return _ideal->back();}
55 
57  iterator begin() {return _ideal->begin();}
58  iterator end() {return _ideal->end();}
59 
61  const_iterator begin() const {return _ideal->begin();}
62  const_iterator end() const {return _ideal->end();}
63 
64  const RawSquareFreeIdeal* getRawIdeal() const {return _ideal;}
66 
67  private:
68  SquareFreeIdeal(const SquareFreeIdeal&); // not available
69  SquareFreeIdeal& operator=(const SquareFreeIdeal&); // not available
70 
73  size_t _capacity;
74 };
75 
76 
77 
78 inline size_t SquareFreeIdeal::getVarCount() const {
79  ASSERT(_ideal != 0);
81  return _names.getVarCount();
82 }
83 
84 inline size_t SquareFreeIdeal::getGeneratorCount() const {
85  ASSERT(_ideal != 0);
86  return _ideal->getGeneratorCount();
87 }
88 
89 #endif
BigIdeal
Definition: BigIdeal.h:27
SquareFreeIdeal::operator=
SquareFreeIdeal & operator=(const BigIdeal &ideal)
Definition: SquareFreeIdeal.cpp:47
RawSquareFreeIdeal::getGeneratorCount
size_t getGeneratorCount() const
Definition: RawSquareFreeIdeal.h:124
RawSquareFreeIdeal::const_iterator
const_iterator doesn't have all it needs to be a proper STL iterator.
Definition: RawSquareFreeIdeal.h:219
RawSquareFreeIdeal::back
Word * back()
Definition: RawSquareFreeIdeal.h:211
SquareFreeIdeal::getNames
const VarNames & getNames() const
Definition: SquareFreeIdeal.h:48
RawSquareFreeIdeal::getVarCount
size_t getVarCount() const
Definition: RawSquareFreeIdeal.h:125
SquareFreeIdeal::renameVars
void renameVars(const VarNames &names)
Definition: SquareFreeIdeal.cpp:58
SquareFreeIdeal::const_iterator
RawSquareFreeIdeal::const_iterator const_iterator
Definition: SquareFreeIdeal.h:60
RawSquareFreeIdeal.h
RawSquareFreeIdeal::iterator
iterator doesn't have all it needs to be a proper STL iterator.
Definition: RawSquareFreeIdeal.h:259
SquareFreeIdeal::SquareFreeIdeal
SquareFreeIdeal()
Definition: SquareFreeIdeal.cpp:24
SquareFreeIdeal::_names
VarNames _names
Definition: SquareFreeIdeal.h:71
SquareFreeIdeal::clear
void clear()
Definition: SquareFreeIdeal.cpp:88
SquareFreeIdeal::swap
void swap(SquareFreeIdeal &ideal)
Definition: SquareFreeIdeal.cpp:95
SquareFreeIdeal::_ideal
RawSquareFreeIdeal * _ideal
Definition: SquareFreeIdeal.h:72
VarNames::getVarCount
size_t getVarCount() const
Returns the current number of variables.
Definition: VarNames.h:112
SquareFreeIdeal::getRawIdeal
const RawSquareFreeIdeal * getRawIdeal() const
Definition: SquareFreeIdeal.h:64
SquareFreeIdeal
Definition: SquareFreeIdeal.h:24
VarNames.h
SquareFreeIdeal::getGeneratorCount
size_t getGeneratorCount() const
Definition: SquareFreeIdeal.h:84
RawSquareFreeIdeal::swap01Exponents
void swap01Exponents()
Change 0 exponents into 1 and vice versa.
Definition: RawSquareFreeIdeal.cpp:651
SquareFreeIdeal::~SquareFreeIdeal
~SquareFreeIdeal()
Definition: SquareFreeIdeal.cpp:43
SquareFreeIdeal::swap01Exponents
void swap01Exponents()
Change 0 exponents into 1 and vice versa.
Definition: SquareFreeIdeal.h:42
RawSquareFreeIdeal::begin
iterator begin()
Definition: RawSquareFreeIdeal.h:300
RawSquareFreeIdeal
A bit packed square free ideal placed in a pre-allocated buffer.
Definition: RawSquareFreeIdeal.h:37
SquareFreeIdeal::insert
void insert(Word *term)
Definition: SquareFreeIdeal.cpp:70
SquareFreeIdeal::iterator
RawSquareFreeIdeal::iterator iterator
Definition: SquareFreeIdeal.h:56
SquareFreeIdeal::getRawIdeal
RawSquareFreeIdeal * getRawIdeal()
Definition: SquareFreeIdeal.h:65
Word
unsigned long Word
The native unsigned type for the CPU.
Definition: stdinc.h:92
SquareFreeIdeal::insertIdentity
void insertIdentity()
Definition: SquareFreeIdeal.cpp:64
SquareFreeIdeal::_capacity
size_t _capacity
Definition: SquareFreeIdeal.h:73
SquareFreeIdeal::end
const_iterator end() const
Definition: SquareFreeIdeal.h:62
SquareFreeIdeal::getCapacity
size_t getCapacity() const
Definition: SquareFreeIdeal.h:51
SquareFreeIdeal::begin
iterator begin()
Definition: SquareFreeIdeal.h:57
SquareFreeIdeal::minimize
void minimize()
Definition: SquareFreeIdeal.cpp:53
VarNames
Defines the variables of a polynomial ring and facilities IO involving them.
Definition: VarNames.h:40
SquareFreeIdeal::back
Word * back()
Definition: SquareFreeIdeal.h:53
RawSquareFreeIdeal::end
iterator end()
Definition: RawSquareFreeIdeal.h:305
ASSERT
#define ASSERT(X)
Definition: stdinc.h:85
SquareFreeIdeal::getVarCount
size_t getVarCount() const
Definition: SquareFreeIdeal.h:78
SquareFreeIdeal::end
iterator end()
Definition: SquareFreeIdeal.h:58
SquareFreeIdeal::reserve
void reserve(size_t capacity)
Definition: SquareFreeIdeal.cpp:101
SquareFreeIdeal::begin
const_iterator begin() const
Definition: SquareFreeIdeal.h:61
SquareFreeIdeal::back
const Word * back() const
Definition: SquareFreeIdeal.h:54