-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConstraintProblem_8h_source.html
More file actions
131 lines (129 loc) · 9.27 KB
/
Copy pathConstraintProblem_8h_source.html
File metadata and controls
131 lines (129 loc) · 9.27 KB
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
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>boa: source/ConstraintProblem.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<img id="MSearchSelect" src="search/search.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</div>
</li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
</ul>
</div>
<h1>source/ConstraintProblem.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __BOA_CONSTRAINT_PROBLEM_H__</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __BOA_CONSTRAINT_PROBLEM_H__</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004 <span class="preprocessor">#include <vector></span>
<a name="l00005"></a>00005
<a name="l00006"></a>00006 <span class="preprocessor">#include "Constraint.h"</span>
<a name="l00007"></a>00007 <span class="preprocessor">#include "LinearProblem.h"</span>
<a name="l00008"></a>00008
<a name="l00009"></a>00009 <span class="keyword">using</span> std::vector;
<a name="l00010"></a>00010
<a name="l00011"></a>00011 <span class="keyword">namespace </span>boa {
<a name="l00012"></a>00012
<a name="l00013"></a><a class="code" href="classboa_1_1ConstraintProblem.html">00013</a> <span class="keyword">class </span><a class="code" href="classboa_1_1ConstraintProblem.html">ConstraintProblem</a> {
<a name="l00014"></a>00014 <span class="keyword">private</span>:
<a name="l00015"></a>00015 <span class="keyword">const</span> vector<Constraint> NO_CONSTRAINTS;
<a name="l00016"></a>00016 vector<Constraint> constraints_;
<a name="l00017"></a>00017 set<Buffer> buffers_;
<a name="l00018"></a>00018 <span class="keywordtype">bool</span> outputGlpk_;
<a name="l00019"></a>00019
<a name="l00020"></a>00020 set<string> CollectVars() <span class="keyword">const</span>;
<a name="l00021"></a>00021
<a name="l00022"></a>00022 vector<Buffer> SolveProblem(<a class="code" href="classboa_1_1LinearProblem.html">LinearProblem</a> lp) <span class="keyword">const</span>;
<a name="l00023"></a>00023
<a name="l00024"></a>00024 vector<string> Blame(<a class="code" href="classboa_1_1LinearProblem.html">LinearProblem</a> lp, <a class="code" href="classboa_1_1Buffer.html">Buffer</a> &buffer) <span class="keyword">const</span>;
<a name="l00025"></a>00025
<a name="l00026"></a>00026 <a class="code" href="classboa_1_1LinearProblem.html">LinearProblem</a> MakeFeasableProblem() <span class="keyword">const</span>;
<a name="l00027"></a>00027 <span class="keyword">public</span>:
<a name="l00028"></a>00028 <a class="code" href="classboa_1_1ConstraintProblem.html">ConstraintProblem</a>(<span class="keywordtype">bool</span> output_glpk) : outputGlpk_(output_glpk) {}
<a name="l00029"></a>00029
<a name="l00030"></a>00030 <span class="keywordtype">void</span> AddBuffer(<span class="keyword">const</span> <a class="code" href="classboa_1_1Buffer.html">Buffer</a>& buffer) {
<a name="l00031"></a>00031 buffers_.insert(buffer);
<a name="l00032"></a>00032 }
<a name="l00033"></a>00033
<a name="l00034"></a>00034 <span class="comment">// Virtual because this method is overridden by the test class MockConstraintProblem.</span>
<a name="l00035"></a>00035 <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddConstraint(<span class="keyword">const</span> <a class="code" href="classboa_1_1Constraint.html">Constraint</a>& c) {
<a name="l00036"></a>00036 constraints_.push_back(c);
<a name="l00037"></a>00037 }
<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="keywordtype">void</span> Clear() {
<a name="l00040"></a>00040 buffers_.clear();
<a name="l00041"></a>00041 constraints_.clear();
<a name="l00042"></a>00042 }
<a name="l00043"></a>00043
<a name="l00044"></a>00044 <span class="keywordtype">int</span> BuffersCount()<span class="keyword"> const </span>{
<a name="l00045"></a>00045 <span class="keywordflow">return</span> buffers_.size();
<a name="l00046"></a>00046 }
<a name="l00047"></a>00047 <span class="comment"></span>
<a name="l00048"></a>00048 <span class="comment"> /**</span>
<a name="l00049"></a>00049 <span class="comment"> Solve the constriant problem defined by the constraints.</span>
<a name="l00050"></a>00050 <span class="comment"></span>
<a name="l00051"></a>00051 <span class="comment"> Return a set of buffers in which buffer overrun may occur.</span>
<a name="l00052"></a>00052 <span class="comment"> */</span>
<a name="l00053"></a>00053 vector<Buffer> <a class="code" href="classboa_1_1ConstraintProblem.html#a89906278f9c580dcc86adf95f87d2a9a">Solve</a>() <span class="keyword">const</span>;
<a name="l00054"></a>00054 <span class="comment"></span>
<a name="l00055"></a>00055 <span class="comment"> /**</span>
<a name="l00056"></a>00056 <span class="comment"> Solve the constraint problem and generate a minimal set of constraints which cause each overrun</span>
<a name="l00057"></a>00057 <span class="comment"></span>
<a name="l00058"></a>00058 <span class="comment"> Return a map - the keys are possibly overrun buffers, the corresponding value is a small set of</span>
<a name="l00059"></a>00059 <span class="comment"> constraints which cause the overrun. The set is minimal in the sense that no subset of these</span>
<a name="l00060"></a>00060 <span class="comment"> constraint will cause the specific buffer overrun, there might be other (smaller) set which will</span>
<a name="l00061"></a>00061 <span class="comment"> also cause the overrun.</span>
<a name="l00062"></a>00062 <span class="comment"> */</span>
<a name="l00063"></a>00063 map<Buffer, vector<string> > <a class="code" href="classboa_1_1ConstraintProblem.html#afb4825c5bf44f112f046f9d93bbdbf3f">SolveAndBlame</a>() <span class="keyword">const</span>;
<a name="l00064"></a>00064 };
<a name="l00065"></a>00065
<a name="l00066"></a>00066 } <span class="comment">// namespace boa</span>
<a name="l00067"></a>00067
<a name="l00068"></a>00068 <span class="preprocessor">#endif </span><span class="comment">/* __BOA_CONSTRAINT_PROBLEM_H__ */</span>
</pre></div></div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Mar 19 17:29:26 2011 for boa by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>