}
Set *rcopy = range != NULL ? range->clone(solver, map) : NULL;
t = solver->createTable(array, domains.getSize(), rcopy);
- HSIteratorTableEntry *entryit = entries->iterator();
+ SetIteratorTableEntry *entryit = entries->iterator();
while (entryit->hasNext()) {
TableEntry *te = entryit->next();
solver->addTableEntry(t, &te->inputs[0], te->inputSize, te->output);
}
Table::~Table() {
- HSIteratorTableEntry *iterator = entries->iterator();
+ SetIteratorTableEntry *iterator = entries->iterator();
while (iterator->hasNext()) {
deleteTableEntry(iterator->next());
}
#include "tunable.h"
void DFS(OrderGraph *graph, Vector<OrderNode *> *finishNodes) {
- HSIteratorOrderNode *iterator = graph->getNodes();
+ SetIteratorOrderNode *iterator = graph->getNodes();
while (iterator->hasNext()) {
OrderNode *node = iterator->next();
if (node->status == NOTVISITED) {
}
void DFSNodeVisit(OrderNode *node, Vector<OrderNode *> *finishNodes, bool isReverse, bool mustvisit, uint sccNum) {
- HSIteratorOrderEdge *iterator = isReverse ? node->inEdges.iterator() : node->outEdges.iterator();
+ SetIteratorOrderEdge *iterator = isReverse ? node->inEdges.iterator() : node->outEdges.iterator();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
if (mustvisit) {
}
void resetNodeInfoStatusSCC(OrderGraph *graph) {
- HSIteratorOrderNode *iterator = graph->getNodes();
+ SetIteratorOrderNode *iterator = graph->getNodes();
while (iterator->hasNext()) {
iterator->next()->status = NOTVISITED;
}
}
bool isMustBeTrueNode(OrderNode *node) {
- HSIteratorOrderEdge *iterator = node->inEdges.iterator();
+ SetIteratorOrderEdge *iterator = node->inEdges.iterator();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
if (!edge->mustPos) {
}
void bypassMustBeTrueNode(CSolver *This, OrderGraph *graph, OrderNode *node) {
- HSIteratorOrderEdge *iterin = node->inEdges.iterator();
+ SetIteratorOrderEdge *iterin = node->inEdges.iterator();
while (iterin->hasNext()) {
OrderEdge *inEdge = iterin->next();
OrderNode *srcNode = inEdge->source;
srcNode->outEdges.remove(inEdge);
- HSIteratorOrderEdge *iterout = node->outEdges.iterator();
+ SetIteratorOrderEdge *iterout = node->outEdges.iterator();
while (iterout->hasNext()) {
OrderEdge *outEdge = iterout->next();
OrderNode *sinkNode = outEdge->sink;
}
void removeMustBeTrueNodes(CSolver *This, OrderGraph *graph) {
- HSIteratorOrderNode *iterator = graph->getNodes();
+ SetIteratorOrderNode *iterator = graph->getNodes();
while (iterator->hasNext()) {
OrderNode *node = iterator->next();
if (isMustBeTrueNode(node)) {
for (uint j = 0; j < rSize; j++) {
OrderNode *rnode = sccNodes.get(j);
//Compute source sets
- HSIteratorOrderEdge *iterator = rnode->inEdges.iterator();
+ SetIteratorOrderEdge *iterator = rnode->inEdges.iterator();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
OrderNode *parent = edge->source;
table->put(rnode, set);
//Use source sets to compute pseudoPos edges
- HSIteratorOrderEdge *iterator = node->inEdges.iterator();
+ SetIteratorOrderEdge *iterator = node->inEdges.iterator();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
OrderNode *parent = edge->source;
}
void DFSMust(OrderGraph *graph, Vector<OrderNode *> *finishNodes) {
- HSIteratorOrderNode *iterator = graph->getNodes();
+ SetIteratorOrderNode *iterator = graph->getNodes();
while (iterator->hasNext()) {
OrderNode *node = iterator->next();
if (node->status == NOTVISITED) {
{
//Compute source sets
- HSIteratorOrderEdge *iterator = node->inEdges.iterator();
+ SetIteratorOrderEdge *iterator = node->inEdges.iterator();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
OrderNode *parent = edge->source;
}
if (computeTransitiveClosure) {
//Compute full transitive closure for nodes
- HSIteratorOrderNode *srciterator = sources->iterator();
+ SetIteratorOrderNode *srciterator = sources->iterator();
while (srciterator->hasNext()) {
OrderNode *srcnode = srciterator->next();
OrderEdge *newedge = graph->getOrderEdgeFromOrderGraph(srcnode, node);
}
{
//Use source sets to compute mustPos edges
- HSIteratorOrderEdge *iterator = node->inEdges.iterator();
+ SetIteratorOrderEdge *iterator = node->inEdges.iterator();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
OrderNode *parent = edge->source;
}
{
//Use source sets to compute mustNeg for edges that would introduce cycle if true
- HSIteratorOrderEdge *iterator = node->outEdges.iterator();
+ SetIteratorOrderEdge *iterator = node->outEdges.iterator();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
OrderNode *child = edge->sink;
had one). */
void localMustAnalysisTotal(CSolver *solver, OrderGraph *graph) {
- HSIteratorOrderEdge *iterator = graph->getEdges();
+ SetIteratorOrderEdge *iterator = graph->getEdges();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
if (edge->mustPos) {
polarity. */
void localMustAnalysisPartial(CSolver *solver, OrderGraph *graph) {
- HSIteratorOrderEdge *iterator = graph->getEdges();
+ SetIteratorOrderEdge *iterator = graph->getEdges();
while (iterator->hasNext()) {
OrderEdge *edge = iterator->next();
if (edge->mustPos) {
}
OrderGraph::~OrderGraph() {
- HSIteratorOrderNode *iterator = nodes->iterator();
+ SetIteratorOrderNode *iterator = nodes->iterator();
while (iterator->hasNext()) {
OrderNode *node = iterator->next();
delete node;
}
delete iterator;
- HSIteratorOrderEdge *eiterator = edges->iterator();
+ SetIteratorOrderEdge *eiterator = edges->iterator();
while (eiterator->hasNext()) {
OrderEdge *edge = eiterator->next();
delete edge;
void addMustOrderEdge(OrderNode *node1, OrderNode *node2, BooleanOrder *constr);
OrderEdge *getInverseOrderEdge(OrderEdge *edge);
Order *getOrder() {return order;}
- HSIteratorOrderNode *getNodes() {return nodes->iterator();}
- HSIteratorOrderEdge *getEdges() {return edges->iterator();}
+ SetIteratorOrderNode *getNodes() {return nodes->iterator();}
+ SetIteratorOrderEdge *getEdges() {return edges->iterator();}
CMEMALLOC;
private:
#include "csolver.h"
void computePolarities(CSolver *This) {
- HSIteratorBoolean *iterator = This->getConstraints();
+ SetIteratorBoolean *iterator = This->getConstraints();
while (iterator->hasNext()) {
Boolean *boolean = iterator->next();
updatePolarity(boolean, P_TRUE);
}
void SATEncoder::encodeAllSATEncoder(CSolver *csolver) {
- HSIteratorBoolean *iterator = csolver->getConstraints();
+ SetIteratorBoolean *iterator = csolver->getConstraints();
while (iterator->hasNext()) {
Boolean *constraint = iterator->next();
Edge c = encodeConstraintSATEncoder(constraint);
Edge undefConst = encodeConstraintSATEncoder(constraint->undefStatus);
printCNF(undefConst);
model_print("**\n");
- HSIteratorTableEntry *iterator = table->entries->iterator();
+ SetIteratorTableEntry *iterator = table->entries->iterator();
uint i = 0;
while (iterator->hasNext()) {
TableEntry *entry = iterator->next();
Table *table = ((FunctionTable *) (func->function))->table;
uint size = table->entries->getSize();
Edge constraints[size];
- HSIteratorTableEntry *iterator = table->entries->iterator();
+ SetIteratorTableEntry *iterator = table->entries->iterator();
uint i = 0;
while (iterator->hasNext()) {
TableEntry *entry = iterator->next();
#include "hashset.h"
typedef HashSet<Boolean *, uintptr_t, 4> HashSetBoolean;
-typedef HSIterator<Boolean *, uintptr_t, 4> HSIteratorBoolean;
+typedef SetIterator<Boolean *, uintptr_t, 4> SetIteratorBoolean;
#endif
class HashSet;
template<typename _Key, typename _KeyInt, int _Shift, unsigned int (*hash_function)(_Key) = default_hash_function<_Key, _Shift, _KeyInt>, bool (*equals)(_Key, _Key) = default_equals<_Key> >
-class HSIterator {
+class SetIterator {
public:
- HSIterator(LinkNode<_Key> *_curr, HashSet <_Key, _KeyInt, _Shift, hash_function, equals> *_set) :
+ SetIterator(LinkNode<_Key> *_curr, HashSet <_Key, _KeyInt, _Shift, hash_function, equals> *_set) :
curr(_curr),
set(_set)
{
HashSet<_Key, _KeyInt, _Shift, hash_function, equals> *copy() {
HashSet<_Key, _KeyInt, _Shift, hash_function, equals> *copy = new HashSet<_Key, _KeyInt, _Shift, hash_function, equals>(table->getCapacity(), table->getLoadFactor());
- HSIterator<_Key, _KeyInt, _Shift, hash_function, equals> *it = iterator();
+ SetIterator<_Key, _KeyInt, _Shift, hash_function, equals> *it = iterator();
while (it->hasNext())
copy->add(it->next());
delete it;
* is already present. */
void addAll(HashSet<_Key, _KeyInt, _Shift, hash_function, equals> *table) {
- HSIterator<_Key, _KeyInt, _Shift, hash_function, equals> *it = iterator();
+ SetIterator<_Key, _KeyInt, _Shift, hash_function, equals> *it = iterator();
while (it->hasNext())
add(it->next());
delete it;
return getSize() == 0;
}
- HSIterator<_Key, _KeyInt, _Shift, hash_function, equals> *iterator() {
- return new HSIterator<_Key, _KeyInt, _Shift, hash_function, equals>(list, this);
+ SetIterator<_Key, _KeyInt, _Shift, hash_function, equals> *iterator() {
+ return new SetIterator<_Key, _KeyInt, _Shift, hash_function, equals>(list, this);
}
/** Override: new operator */
typedef HashTable<void *, void *, uintptr_t, 4> CloneMap;
typedef HashTable<Order* , IntegerEncodingRecord*, uintptr_t, 4> HashTableOrderIntegerEncoding;
-typedef HSIterator<TableEntry *, uintptr_t, 4, table_entry_hash_function, table_entry_equals> HSIteratorTableEntry;
-typedef HSIterator<OrderEdge *, uintptr_t, 4, order_edge_hash_function, order_edge_equals> HSIteratorOrderEdge;
-typedef HSIterator<OrderNode *, uintptr_t, 4, order_node_hash_function, order_node_equals> HSIteratorOrderNode;
+typedef SetIterator<TableEntry *, uintptr_t, 4, table_entry_hash_function, table_entry_equals> SetIteratorTableEntry;
+typedef SetIterator<OrderEdge *, uintptr_t, 4, order_edge_hash_function, order_edge_equals> SetIteratorOrderEdge;
+typedef SetIterator<OrderNode *, uintptr_t, 4, order_node_hash_function, order_node_equals> SetIteratorOrderNode;
#endif
#include <strings.h>
void naiveEncodingDecision(CSolver *This) {
- HSIteratorBoolean *iterator = This->getConstraints();
+ SetIteratorBoolean *iterator = This->getConstraints();
while (iterator->hasNext()) {
Boolean *boolean = iterator->next();
naiveEncodingConstraint(boolean);
SearchTuner * SearchTuner::copyUsed() {
SearchTuner * tuner = new SearchTuner();
- HSIteratorTunableSetting *iterator=usedSettings.iterator();
+ SetIteratorTunableSetting *iterator=usedSettings.iterator();
while(iterator->hasNext()) {
TunableSetting *setting=iterator->next();
TunableSetting *copy=new TunableSetting(setting);
}
SearchTuner::~SearchTuner() {
- HSIteratorTunableSetting *iterator=settings.iterator();
+ SetIteratorTunableSetting *iterator=settings.iterator();
while(iterator->hasNext()) {
TunableSetting *setting=iterator->next();
delete setting;
}
void SearchTuner::print() {
- HSIteratorTunableSetting *iterator=settings.iterator();
+ SetIteratorTunableSetting *iterator=settings.iterator();
while(iterator->hasNext()) {
TunableSetting *setting=iterator->next();
setting->print();
}
void SearchTuner::printUsed() {
- HSIteratorTunableSetting *iterator=usedSettings.iterator();
+ SetIteratorTunableSetting *iterator=usedSettings.iterator();
while(iterator->hasNext()) {
TunableSetting *setting=iterator->next();
setting->print();
bool tunableSettingEquals(TunableSetting *setting1, TunableSetting *setting2);
typedef HashSet<TunableSetting *, uintptr_t, 4, tunableSettingHash, tunableSettingEquals> HashSetTunableSetting;
-typedef HSIterator<TunableSetting *, uintptr_t, 4, tunableSettingHash, tunableSettingEquals> HSIteratorTunableSetting;
+typedef SetIterator<TunableSetting *, uintptr_t, 4, tunableSettingHash, tunableSettingEquals> SetIteratorTunableSetting;
class SearchTuner : public Tuner {
public:
CSolver *CSolver::clone() {
CSolver *copy = new CSolver();
CloneMap map;
- HSIteratorBoolean *it = getConstraints();
+ SetIteratorBoolean *it = getConstraints();
while (it->hasNext()) {
Boolean *b = it->next();
copy->addConstraint(b->clone(copy, &map));
Tuner *getTuner() { return tuner; }
- HSIteratorBoolean *getConstraints() { return constraints.iterator(); }
+ SetIteratorBoolean *getConstraints() { return constraints.iterator(); }
SATEncoder *getSATEncoder() {return satEncoder;}