blob: 294b5370afdfed2461031c0da045687b207f442c [file] [log] [blame]
Lang Hames421c0732010-01-06 08:53:34 +00001//===-- Solution.h ------- PBQP Solution ------------------------*- C++ -*-===//
Lang Hamescaaf1202009-08-07 00:25:12 +00002//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
Lang Hames030c4bf2010-01-26 04:49:58 +000010// PBQP Solution class.
Lang Hamescaaf1202009-08-07 00:25:12 +000011//
12//===----------------------------------------------------------------------===//
13
Lang Hames6699fb22009-08-06 23:32:48 +000014#ifndef LLVM_CODEGEN_PBQP_SOLUTION_H
15#define LLVM_CODEGEN_PBQP_SOLUTION_H
16
Lang Hames030c4bf2010-01-26 04:49:58 +000017#include "Math.h"
18#include "Graph.h"
19
20#include <map>
Lang Hames6699fb22009-08-06 23:32:48 +000021
22namespace PBQP {
23
Lang Hames030c4bf2010-01-26 04:49:58 +000024 /// \brief Represents a solution to a PBQP problem.
25 ///
26 /// To get the selection for each node in the problem use the getSelection method.
27 class Solution {
28 private:
29 typedef std::map<Graph::NodeItr, unsigned, NodeItrComparator> SelectionsMap;
30 SelectionsMap selections;
Lang Hames6699fb22009-08-06 23:32:48 +000031
Lang Hames030c4bf2010-01-26 04:49:58 +000032 public:
Lang Hames6699fb22009-08-06 23:32:48 +000033
Lang Hames030c4bf2010-01-26 04:49:58 +000034 /// \brief Number of nodes for which selections have been made.
35 /// @return Number of nodes for which selections have been made.
36 unsigned numNodes() const { return selections.size(); }
Lang Hames6699fb22009-08-06 23:32:48 +000037
Lang Hames030c4bf2010-01-26 04:49:58 +000038 /// \brief Set the selection for a given node.
39 /// @param nItr Node iterator.
40 /// @param selection Selection for nItr.
41 void setSelection(Graph::NodeItr nItr, unsigned selection) {
42 selections[nItr] = selection;
43 }
Lang Hames6699fb22009-08-06 23:32:48 +000044
Lang Hames030c4bf2010-01-26 04:49:58 +000045 /// \brief Get a node's selection.
46 /// @param nItr Node iterator.
47 /// @return The selection for nItr;
48 unsigned getSelection(Graph::NodeItr nItr) const {
49 SelectionsMap::const_iterator sItr = selections.find(nItr);
50 assert(sItr != selections.end() && "No selection for node.");
51 return sItr->second;
52 }
Lang Hames6699fb22009-08-06 23:32:48 +000053
Lang Hames030c4bf2010-01-26 04:49:58 +000054 };
Lang Hames6699fb22009-08-06 23:32:48 +000055
56}
57
58#endif // LLVM_CODEGEN_PBQP_SOLUTION_H