Files
ortools-clone/docs/cpp/classoperations__research_1_1_domain.html
Mizux Seiha 3b81c981c2 Update doc
2022-03-04 00:19:15 +01:00

1596 lines
102 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- HTML header for doxygen 1.8.18-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OR-Tools: Domain</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="styleSheet.tmp.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="orLogo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">OR-Tools
&#160;<span id="projectnumber">9.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classoperations__research_1_1_domain.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classoperations__research_1_1_domain-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">Domain</div></div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >We call <em>domain</em> any subset of Int64 = [kint64min, kint64max]. </p>
<p >This class can be used to represent such set efficiently as a sorted and non-adjacent list of intervals. This is efficient as long as the size of such list stays reasonable.</p>
<p >In the comments below, the domain of *this will always be written 'D'. Note that all the functions are safe with respect to integer overflow. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00081">81</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain_1_1_domain_iterator.html">DomainIterator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to iterate over all values of a domain in order with for (const int64_t v : domain.Values()) { ... }. <a href="classoperations__research_1_1_domain_1_1_domain_iterator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structoperations__research_1_1_domain_1_1_domain_iterator_begin_end.html">DomainIteratorBeginEnd</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structoperations__research_1_1_domain_1_1_domain_iterator_begin_end_with_ownership.html">DomainIteratorBeginEndWithOwnership</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9f9601f2f55637f70394aa8eea61345a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a9f9601f2f55637f70394aa8eea61345a">Domain</a> ()</td></tr>
<tr class="memdesc:a9f9601f2f55637f70394aa8eea61345a"><td class="mdescLeft">&#160;</td><td class="mdescRight">By default, <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> will be empty. <a href="classoperations__research_1_1_domain.html#a9f9601f2f55637f70394aa8eea61345a">More...</a><br /></td></tr>
<tr class="separator:a9f9601f2f55637f70394aa8eea61345a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa293fd5002b6b472c7a6d6a5ea145506"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#aa293fd5002b6b472c7a6d6a5ea145506">Domain</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;other)</td></tr>
<tr class="memdesc:aa293fd5002b6b472c7a6d6a5ea145506"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor (mandatory as we define the move constructor). <a href="classoperations__research_1_1_domain.html#aa293fd5002b6b472c7a6d6a5ea145506">More...</a><br /></td></tr>
<tr class="separator:aa293fd5002b6b472c7a6d6a5ea145506"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a933201e44113f3b11e464ea9daa85f0a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a933201e44113f3b11e464ea9daa85f0a">operator=</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;other)</td></tr>
<tr class="memdesc:a933201e44113f3b11e464ea9daa85f0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy operator (mandatory as we define the move operator). <a href="classoperations__research_1_1_domain.html#a933201e44113f3b11e464ea9daa85f0a">More...</a><br /></td></tr>
<tr class="separator:a933201e44113f3b11e464ea9daa85f0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a096f0f3c7b2e8ee882c1644fb80b3bde"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a096f0f3c7b2e8ee882c1644fb80b3bde">Domain</a> (<a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&amp;other)</td></tr>
<tr class="memdesc:a096f0f3c7b2e8ee882c1644fb80b3bde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move constructor. <a href="classoperations__research_1_1_domain.html#a096f0f3c7b2e8ee882c1644fb80b3bde">More...</a><br /></td></tr>
<tr class="separator:a096f0f3c7b2e8ee882c1644fb80b3bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace5d8c40e807de5ec1a9eb087dc276ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ace5d8c40e807de5ec1a9eb087dc276ed">operator=</a> (<a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&amp;other)</td></tr>
<tr class="memdesc:ace5d8c40e807de5ec1a9eb087dc276ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move operator. <a href="classoperations__research_1_1_domain.html#ace5d8c40e807de5ec1a9eb087dc276ed">More...</a><br /></td></tr>
<tr class="separator:ace5d8c40e807de5ec1a9eb087dc276ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7074192daff073a42730e5453f5b697"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ac7074192daff073a42730e5453f5b697">Domain</a> (int64_t <a class="el" href="primal__dual__hybrid__gradient_8cc.html#a730b1ea892f1f794d9bd5f16027acb63">value</a>)</td></tr>
<tr class="memdesc:ac7074192daff073a42730e5453f5b697"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for the common case of a singleton domain. <a href="classoperations__research_1_1_domain.html#ac7074192daff073a42730e5453f5b697">More...</a><br /></td></tr>
<tr class="separator:ac7074192daff073a42730e5453f5b697"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad79741f48ae54ee61f26c8241f40c045"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ad79741f48ae54ee61f26c8241f40c045">Domain</a> (int64_t left, int64_t right)</td></tr>
<tr class="memdesc:ad79741f48ae54ee61f26c8241f40c045"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for the common case of a single interval [left, right]. <a href="classoperations__research_1_1_domain.html#ad79741f48ae54ee61f26c8241f40c045">More...</a><br /></td></tr>
<tr class="separator:ad79741f48ae54ee61f26c8241f40c045"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a818f990750b705242723d2e5b9958223"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a818f990750b705242723d2e5b9958223">FlattenedIntervals</a> () const</td></tr>
<tr class="memdesc:a818f990750b705242723d2e5b9958223"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method returns the flattened list of interval bounds of the domain. <a href="classoperations__research_1_1_domain.html#a818f990750b705242723d2e5b9958223">More...</a><br /></td></tr>
<tr class="separator:a818f990750b705242723d2e5b9958223"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade71ed1801ba29c7190c387511f76044"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structoperations__research_1_1_domain_1_1_domain_iterator_begin_end.html">DomainIteratorBeginEnd</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ade71ed1801ba29c7190c387511f76044">Values</a> () const &amp;</td></tr>
<tr class="separator:ade71ed1801ba29c7190c387511f76044"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b42c1ad06b5b9b5fde540882b1b074c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structoperations__research_1_1_domain_1_1_domain_iterator_begin_end_with_ownership.html">DomainIteratorBeginEndWithOwnership</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a3b42c1ad06b5b9b5fde540882b1b074c">Values</a> () const &amp;&amp;</td></tr>
<tr class="separator:a3b42c1ad06b5b9b5fde540882b1b074c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e12342fc420701fbffd97025421575a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a8e12342fc420701fbffd97025421575a">IsEmpty</a> () const</td></tr>
<tr class="memdesc:a8e12342fc420701fbffd97025421575a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if this is the empty set. <a href="classoperations__research_1_1_domain.html#a8e12342fc420701fbffd97025421575a">More...</a><br /></td></tr>
<tr class="separator:a8e12342fc420701fbffd97025421575a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a572bd92c25ebc67c72137fd59e53f6d6"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a572bd92c25ebc67c72137fd59e53f6d6">Size</a> () const</td></tr>
<tr class="memdesc:a572bd92c25ebc67c72137fd59e53f6d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of elements in the domain. <a href="classoperations__research_1_1_domain.html#a572bd92c25ebc67c72137fd59e53f6d6">More...</a><br /></td></tr>
<tr class="separator:a572bd92c25ebc67c72137fd59e53f6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cf21a67f7d81a800ff912239bb2db64"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a8cf21a67f7d81a800ff912239bb2db64">Min</a> () const</td></tr>
<tr class="memdesc:a8cf21a67f7d81a800ff912239bb2db64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the min value of the domain. <a href="classoperations__research_1_1_domain.html#a8cf21a67f7d81a800ff912239bb2db64">More...</a><br /></td></tr>
<tr class="separator:a8cf21a67f7d81a800ff912239bb2db64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa74ea8cd1b0767659f704b482d07c103"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#aa74ea8cd1b0767659f704b482d07c103">Max</a> () const</td></tr>
<tr class="memdesc:aa74ea8cd1b0767659f704b482d07c103"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the max value of the domain. <a href="classoperations__research_1_1_domain.html#aa74ea8cd1b0767659f704b482d07c103">More...</a><br /></td></tr>
<tr class="separator:aa74ea8cd1b0767659f704b482d07c103"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa070cf76ca3ef43a3b8db17c77d35669"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#aa070cf76ca3ef43a3b8db17c77d35669">SmallestValue</a> () const</td></tr>
<tr class="memdesc:aa070cf76ca3ef43a3b8db17c77d35669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value closest to zero. <a href="classoperations__research_1_1_domain.html#aa070cf76ca3ef43a3b8db17c77d35669">More...</a><br /></td></tr>
<tr class="separator:aa070cf76ca3ef43a3b8db17c77d35669"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a826a01cb8175850ff6e5b833e4689959"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a826a01cb8175850ff6e5b833e4689959">IsFixed</a> () const</td></tr>
<tr class="memdesc:a826a01cb8175850ff6e5b833e4689959"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true iff the domain is reduced to a single value. <a href="classoperations__research_1_1_domain.html#a826a01cb8175850ff6e5b833e4689959">More...</a><br /></td></tr>
<tr class="separator:a826a01cb8175850ff6e5b833e4689959"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46d31d56136315d2894193c3ac74ec66"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a46d31d56136315d2894193c3ac74ec66">FixedValue</a> () const</td></tr>
<tr class="memdesc:a46d31d56136315d2894193c3ac74ec66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of a fixed domain. <a href="classoperations__research_1_1_domain.html#a46d31d56136315d2894193c3ac74ec66">More...</a><br /></td></tr>
<tr class="separator:a46d31d56136315d2894193c3ac74ec66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22c6c2f121586b5d76feb4b0e536dfde"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a22c6c2f121586b5d76feb4b0e536dfde">Contains</a> (int64_t <a class="el" href="primal__dual__hybrid__gradient_8cc.html#a730b1ea892f1f794d9bd5f16027acb63">value</a>) const</td></tr>
<tr class="memdesc:a22c6c2f121586b5d76feb4b0e536dfde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true iff value is in <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a>. <a href="classoperations__research_1_1_domain.html#a22c6c2f121586b5d76feb4b0e536dfde">More...</a><br /></td></tr>
<tr class="separator:a22c6c2f121586b5d76feb4b0e536dfde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f922def1b57974333f228818cd04e68"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a1f922def1b57974333f228818cd04e68">IsIncludedIn</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;domain) const</td></tr>
<tr class="memdesc:a1f922def1b57974333f228818cd04e68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true iff D is included in the given domain. <a href="classoperations__research_1_1_domain.html#a1f922def1b57974333f228818cd04e68">More...</a><br /></td></tr>
<tr class="separator:a1f922def1b57974333f228818cd04e68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f1de3874966a137f140748498f43e0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a1f1de3874966a137f140748498f43e0c">Complement</a> () const</td></tr>
<tr class="memdesc:a1f1de3874966a137f140748498f43e0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the set Int64 D. <a href="classoperations__research_1_1_domain.html#a1f1de3874966a137f140748498f43e0c">More...</a><br /></td></tr>
<tr class="separator:a1f1de3874966a137f140748498f43e0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e3aa02e2d8300db5f1fc12f6b3228fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a1e3aa02e2d8300db5f1fc12f6b3228fa">Negation</a> () const</td></tr>
<tr class="memdesc:a1e3aa02e2d8300db5f1fc12f6b3228fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns {x ∈ Int64, ∃ e ∈ D, x = -e}. <a href="classoperations__research_1_1_domain.html#a1e3aa02e2d8300db5f1fc12f6b3228fa">More...</a><br /></td></tr>
<tr class="separator:a1e3aa02e2d8300db5f1fc12f6b3228fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a835826c4c5129b74553042a357a721ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a835826c4c5129b74553042a357a721ff">IntersectionWith</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;domain) const</td></tr>
<tr class="memdesc:a835826c4c5129b74553042a357a721ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the intersection of D and domain. <a href="classoperations__research_1_1_domain.html#a835826c4c5129b74553042a357a721ff">More...</a><br /></td></tr>
<tr class="separator:a835826c4c5129b74553042a357a721ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5919f86aede74172b7fea05ebdb58975"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a5919f86aede74172b7fea05ebdb58975">UnionWith</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;domain) const</td></tr>
<tr class="memdesc:a5919f86aede74172b7fea05ebdb58975"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the union of D and domain. <a href="classoperations__research_1_1_domain.html#a5919f86aede74172b7fea05ebdb58975">More...</a><br /></td></tr>
<tr class="separator:a5919f86aede74172b7fea05ebdb58975"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f9af4a46ee07931e3e5e50f6ddfb8ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a4f9af4a46ee07931e3e5e50f6ddfb8ad">AdditionWith</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;domain) const</td></tr>
<tr class="memdesc:a4f9af4a46ee07931e3e5e50f6ddfb8ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns {x ∈ Int64, ∃ a ∈ D, ∃ b ∈ domain, x = a + b}. <a href="classoperations__research_1_1_domain.html#a4f9af4a46ee07931e3e5e50f6ddfb8ad">More...</a><br /></td></tr>
<tr class="separator:a4f9af4a46ee07931e3e5e50f6ddfb8ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63a708c626b59b4504ddb879496c894e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e">MultiplicationBy</a> (int64_t <a class="el" href="variable__and__expressions_8cc.html#a2091cd7d80fdd31762020bce86138587">coeff</a>, bool *exact=nullptr) const</td></tr>
<tr class="memdesc:a63a708c626b59b4504ddb879496c894e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}. <a href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e">More...</a><br /></td></tr>
<tr class="separator:a63a708c626b59b4504ddb879496c894e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd2c59687cc53dda333d0f18c457389b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#abd2c59687cc53dda333d0f18c457389b">RelaxIfTooComplex</a> () const</td></tr>
<tr class="memdesc:abd2c59687cc53dda333d0f18c457389b"><td class="mdescLeft">&#160;</td><td class="mdescRight">If <a class="el" href="classoperations__research_1_1_domain.html#a3dcbf23ccbed61ee64ec08a934f57a9c" title="Basic read-only std::vector&lt;&gt; wrapping to view a Domain as a sorted list of non-adjacent intervals.">NumIntervals()</a> is too large, this return a superset of the domain. <a href="classoperations__research_1_1_domain.html#abd2c59687cc53dda333d0f18c457389b">More...</a><br /></td></tr>
<tr class="separator:abd2c59687cc53dda333d0f18c457389b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fe0f92e6c1681f46239c1b14d091dea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a2fe0f92e6c1681f46239c1b14d091dea">ContinuousMultiplicationBy</a> (int64_t <a class="el" href="variable__and__expressions_8cc.html#a2091cd7d80fdd31762020bce86138587">coeff</a>) const</td></tr>
<tr class="memdesc:a2fe0f92e6c1681f46239c1b14d091dea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a superset of <a class="el" href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e" title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. <a href="classoperations__research_1_1_domain.html#a2fe0f92e6c1681f46239c1b14d091dea">More...</a><br /></td></tr>
<tr class="separator:a2fe0f92e6c1681f46239c1b14d091dea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a8f8efa14efbcdf58803c1c26568ba7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a4a8f8efa14efbcdf58803c1c26568ba7">ContinuousMultiplicationBy</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;domain) const</td></tr>
<tr class="memdesc:a4a8f8efa14efbcdf58803c1c26568ba7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a superset of <a class="el" href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e" title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. <a href="classoperations__research_1_1_domain.html#a4a8f8efa14efbcdf58803c1c26568ba7">More...</a><br /></td></tr>
<tr class="separator:a4a8f8efa14efbcdf58803c1c26568ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acecac80bcaa379f4d37af5a0f0b48d02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#acecac80bcaa379f4d37af5a0f0b48d02">DivisionBy</a> (int64_t <a class="el" href="variable__and__expressions_8cc.html#a2091cd7d80fdd31762020bce86138587">coeff</a>) const</td></tr>
<tr class="memdesc:acecac80bcaa379f4d37af5a0f0b48d02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns {x ∈ Int64, ∃ e ∈ D, x = e / coeff}. <a href="classoperations__research_1_1_domain.html#acecac80bcaa379f4d37af5a0f0b48d02">More...</a><br /></td></tr>
<tr class="separator:acecac80bcaa379f4d37af5a0f0b48d02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1341b29865c5167a64de30c797672e4c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a1341b29865c5167a64de30c797672e4c">InverseMultiplicationBy</a> (const int64_t <a class="el" href="variable__and__expressions_8cc.html#a2091cd7d80fdd31762020bce86138587">coeff</a>) const</td></tr>
<tr class="memdesc:a1341b29865c5167a64de30c797672e4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns {x ∈ Int64, ∃ e ∈ D, x * coeff = e}. <a href="classoperations__research_1_1_domain.html#a1341b29865c5167a64de30c797672e4c">More...</a><br /></td></tr>
<tr class="separator:a1341b29865c5167a64de30c797672e4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4bddf829edf1817ecffe94dcc2c6260"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ae4bddf829edf1817ecffe94dcc2c6260">PositiveModuloBySuperset</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;modulo) const</td></tr>
<tr class="memdesc:ae4bddf829edf1817ecffe94dcc2c6260"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a superset of {x ∈ Int64, ∃ e ∈ D, ∃ m ∈ modulo, x = e % m }. <a href="classoperations__research_1_1_domain.html#ae4bddf829edf1817ecffe94dcc2c6260">More...</a><br /></td></tr>
<tr class="separator:ae4bddf829edf1817ecffe94dcc2c6260"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93b23d6d33373e9a7067445d43389bad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a93b23d6d33373e9a7067445d43389bad">PositiveDivisionBySuperset</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;divisor) const</td></tr>
<tr class="memdesc:a93b23d6d33373e9a7067445d43389bad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a superset of {x ∈ Int64, ∃ e ∈ D, ∃ d ∈ divisor, x = e / d }. <a href="classoperations__research_1_1_domain.html#a93b23d6d33373e9a7067445d43389bad">More...</a><br /></td></tr>
<tr class="separator:a93b23d6d33373e9a7067445d43389bad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac90f7cc5e58926631a01fd122af44cab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ac90f7cc5e58926631a01fd122af44cab">SquareSuperset</a> () const</td></tr>
<tr class="memdesc:ac90f7cc5e58926631a01fd122af44cab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a superset of {x ∈ Int64, ∃ y ∈ D, x = y * y }. <a href="classoperations__research_1_1_domain.html#ac90f7cc5e58926631a01fd122af44cab">More...</a><br /></td></tr>
<tr class="separator:ac90f7cc5e58926631a01fd122af44cab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee800549042643f64022ca6a1e554fa4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#aee800549042643f64022ca6a1e554fa4">SimplifyUsingImpliedDomain</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;implied_domain) const</td></tr>
<tr class="memdesc:aee800549042643f64022ca6a1e554fa4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Advanced usage. <a href="classoperations__research_1_1_domain.html#aee800549042643f64022ca6a1e554fa4">More...</a><br /></td></tr>
<tr class="separator:aee800549042643f64022ca6a1e554fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19c380b03cea21d7ac7325136a131ff0"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a19c380b03cea21d7ac7325136a131ff0">ToString</a> () const</td></tr>
<tr class="memdesc:a19c380b03cea21d7ac7325136a131ff0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a compact string of a vector of intervals like "[1,4][6][10,20]". <a href="classoperations__research_1_1_domain.html#a19c380b03cea21d7ac7325136a131ff0">More...</a><br /></td></tr>
<tr class="separator:a19c380b03cea21d7ac7325136a131ff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e5a75821e16c8a560b487d3b1528a14"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a4e5a75821e16c8a560b487d3b1528a14">operator&lt;</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;other) const</td></tr>
<tr class="memdesc:a4e5a75821e16c8a560b487d3b1528a14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lexicographic order on the <a class="el" href="classoperations__research_1_1_domain.html#a9743d7273fb28e7fff6ed810c90a43f1">intervals()</a> representation. <a href="classoperations__research_1_1_domain.html#a4e5a75821e16c8a560b487d3b1528a14">More...</a><br /></td></tr>
<tr class="separator:a4e5a75821e16c8a560b487d3b1528a14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cab9b78b4670f5a40bfe367b4f3988b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a9cab9b78b4670f5a40bfe367b4f3988b">operator==</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;other) const</td></tr>
<tr class="separator:a9cab9b78b4670f5a40bfe367b4f3988b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57af699c15e6bb8762dbfe47ae7f3441"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a57af699c15e6bb8762dbfe47ae7f3441">operator!=</a> (const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;other) const</td></tr>
<tr class="separator:a57af699c15e6bb8762dbfe47ae7f3441"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3dcbf23ccbed61ee64ec08a934f57a9c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a3dcbf23ccbed61ee64ec08a934f57a9c">NumIntervals</a> () const</td></tr>
<tr class="memdesc:a3dcbf23ccbed61ee64ec08a934f57a9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic read-only std::vector&lt;&gt; wrapping to view a <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> as a sorted list of non-adjacent intervals. <a href="classoperations__research_1_1_domain.html#a3dcbf23ccbed61ee64ec08a934f57a9c">More...</a><br /></td></tr>
<tr class="separator:a3dcbf23ccbed61ee64ec08a934f57a9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52ade49985f3a075425913618285a30d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a52ade49985f3a075425913618285a30d">front</a> () const</td></tr>
<tr class="separator:a52ade49985f3a075425913618285a30d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a431944fe258a149a4db1271b0cd85efb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a431944fe258a149a4db1271b0cd85efb">back</a> () const</td></tr>
<tr class="separator:a431944fe258a149a4db1271b0cd85efb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dafcadd44c9f3cd736efe13578ac0d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a5dafcadd44c9f3cd736efe13578ac0d7">operator[]</a> (int i) const</td></tr>
<tr class="separator:a5dafcadd44c9f3cd736efe13578ac0d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7a48fc0342445c5d2ae540c0aabd3d9"><td class="memItemLeft" align="right" valign="top">absl::InlinedVector&lt; <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>, 1 &gt;::const_iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ad7a48fc0342445c5d2ae540c0aabd3d9">begin</a> () const</td></tr>
<tr class="separator:ad7a48fc0342445c5d2ae540c0aabd3d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8fc5d3706634db172d0d86970998bc3"><td class="memItemLeft" align="right" valign="top">absl::InlinedVector&lt; <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>, 1 &gt;::const_iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ac8fc5d3706634db172d0d86970998bc3">end</a> () const</td></tr>
<tr class="separator:ac8fc5d3706634db172d0d86970998bc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9743d7273fb28e7fff6ed810c90a43f1"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a9743d7273fb28e7fff6ed810c90a43f1">intervals</a> () const</td></tr>
<tr class="separator:a9743d7273fb28e7fff6ed810c90a43f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a03a595b90f43d02186eb660424c6ca1b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a03a595b90f43d02186eb660424c6ca1b">AllValues</a> ()</td></tr>
<tr class="memdesc:a03a595b90f43d02186eb660424c6ca1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the full domain Int64. <a href="classoperations__research_1_1_domain.html#a03a595b90f43d02186eb660424c6ca1b">More...</a><br /></td></tr>
<tr class="separator:a03a595b90f43d02186eb660424c6ca1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2d88de67793063ad5f5e923ffd1c0eb"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#ac2d88de67793063ad5f5e923ffd1c0eb">FromValues</a> (std::vector&lt; int64_t &gt; values)</td></tr>
<tr class="memdesc:ac2d88de67793063ad5f5e923ffd1c0eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a domain from the union of an unsorted list of integer values. <a href="classoperations__research_1_1_domain.html#ac2d88de67793063ad5f5e923ffd1c0eb">More...</a><br /></td></tr>
<tr class="separator:ac2d88de67793063ad5f5e923ffd1c0eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99f2a0dc67792cdc74b4792055b083d3"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a99f2a0dc67792cdc74b4792055b083d3">FromIntervals</a> (absl::Span&lt; const <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a> &gt; <a class="el" href="classoperations__research_1_1_domain.html#a9743d7273fb28e7fff6ed810c90a43f1">intervals</a>)</td></tr>
<tr class="memdesc:a99f2a0dc67792cdc74b4792055b083d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a domain from the union of an unsorted list of intervals. <a href="classoperations__research_1_1_domain.html#a99f2a0dc67792cdc74b4792055b083d3">More...</a><br /></td></tr>
<tr class="separator:a99f2a0dc67792cdc74b4792055b083d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32f2f5802ae5b535d979303ef1b7fc48"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a32f2f5802ae5b535d979303ef1b7fc48">FromFlatSpanOfIntervals</a> (absl::Span&lt; const int64_t &gt; flat_intervals)</td></tr>
<tr class="memdesc:a32f2f5802ae5b535d979303ef1b7fc48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as <a class="el" href="classoperations__research_1_1_domain.html#a99f2a0dc67792cdc74b4792055b083d3" title="Creates a domain from the union of an unsorted list of intervals.">FromIntervals()</a> for a flattened representation (start, end, start, end, ...). <a href="classoperations__research_1_1_domain.html#a32f2f5802ae5b535d979303ef1b7fc48">More...</a><br /></td></tr>
<tr class="separator:a32f2f5802ae5b535d979303ef1b7fc48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a836e47cf167914557e5140fbccbc652c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a836e47cf167914557e5140fbccbc652c">FromVectorIntervals</a> (const std::vector&lt; std::vector&lt; int64_t &gt; &gt; &amp;<a class="el" href="classoperations__research_1_1_domain.html#a9743d7273fb28e7fff6ed810c90a43f1">intervals</a>)</td></tr>
<tr class="memdesc:a836e47cf167914557e5140fbccbc652c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method is available in Python, Java and .NET. <a href="classoperations__research_1_1_domain.html#a836e47cf167914557e5140fbccbc652c">More...</a><br /></td></tr>
<tr class="separator:a836e47cf167914557e5140fbccbc652c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a647e4a17d1c9be74dede4116d0877d1d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classoperations__research_1_1_domain.html">Domain</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1_domain.html#a647e4a17d1c9be74dede4116d0877d1d">FromFlatIntervals</a> (const std::vector&lt; int64_t &gt; &amp;flat_intervals)</td></tr>
<tr class="memdesc:a647e4a17d1c9be74dede4116d0877d1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method is available in Python, Java and .NET. <a href="classoperations__research_1_1_domain.html#a647e4a17d1c9be74dede4116d0877d1d">More...</a><br /></td></tr>
<tr class="separator:a647e4a17d1c9be74dede4116d0877d1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a9f9601f2f55637f70394aa8eea61345a" name="a9f9601f2f55637f70394aa8eea61345a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f9601f2f55637f70394aa8eea61345a">&#9670;&nbsp;</a></span>Domain() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>By default, <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> will be empty. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00084">84</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="aa293fd5002b6b472c7a6d6a5ea145506" name="aa293fd5002b6b472c7a6d6a5ea145506"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa293fd5002b6b472c7a6d6a5ea145506">&#9670;&nbsp;</a></span>Domain() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy constructor (mandatory as we define the move constructor). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00088">88</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a096f0f3c7b2e8ee882c1644fb80b3bde" name="a096f0f3c7b2e8ee882c1644fb80b3bde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a096f0f3c7b2e8ee882c1644fb80b3bde">&#9670;&nbsp;</a></span>Domain() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move constructor. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00097">97</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="ac7074192daff073a42730e5453f5b697" name="ac7074192daff073a42730e5453f5b697"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7074192daff073a42730e5453f5b697">&#9670;&nbsp;</a></span>Domain() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor for the common case of a singleton domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00120">120</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="ad79741f48ae54ee61f26c8241f40c045" name="ad79741f48ae54ee61f26c8241f40c045"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad79741f48ae54ee61f26c8241f40c045">&#9670;&nbsp;</a></span>Domain() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>left</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>right</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor for the common case of a single interval [left, right]. </p>
<p >If left &gt; right, this will result in the empty domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00137">137</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a4f9af4a46ee07931e3e5e50f6ddfb8ad" name="a4f9af4a46ee07931e3e5e50f6ddfb8ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f9af4a46ee07931e3e5e50f6ddfb8ad">&#9670;&nbsp;</a></span>AdditionWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> AdditionWith </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns {x ∈ Int64, ∃ a ∈ D, ∃ b ∈ domain, x = a + b}. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00353">353</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a03a595b90f43d02186eb660424c6ca1b" name="a03a595b90f43d02186eb660424c6ca1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03a595b90f43d02186eb660424c6ca1b">&#9670;&nbsp;</a></span>AllValues()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> AllValues </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the full domain Int64. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00142">142</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a431944fe258a149a4db1271b0cd85efb" name="a431944fe258a149a4db1271b0cd85efb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a431944fe258a149a4db1271b0cd85efb">&#9670;&nbsp;</a></span>back()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a> back </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00427">427</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="ad7a48fc0342445c5d2ae540c0aabd3d9" name="ad7a48fc0342445c5d2ae540c0aabd3d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7a48fc0342445c5d2ae540c0aabd3d9">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">absl::InlinedVector&lt; <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>, 1 &gt;::const_iterator begin </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00429">429</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a1f1de3874966a137f140748498f43e0c" name="a1f1de3874966a137f140748498f43e0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f1de3874966a137f140748498f43e0c">&#9670;&nbsp;</a></span>Complement()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> Complement </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the set Int64 D. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00266">266</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a22c6c2f121586b5d76feb4b0e536dfde" name="a22c6c2f121586b5d76feb4b0e536dfde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22c6c2f121586b5d76feb4b0e536dfde">&#9670;&nbsp;</a></span>Contains()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Contains </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true iff value is in <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a>. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00242">242</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a4a8f8efa14efbcdf58803c1c26568ba7" name="a4a8f8efa14efbcdf58803c1c26568ba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a8f8efa14efbcdf58803c1c26568ba7">&#9670;&nbsp;</a></span>ContinuousMultiplicationBy() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> ContinuousMultiplicationBy </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a superset of <a class="el" href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e" title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. </p>
<p >This behaves as if we replace the set D of non-adjacent integer intervals by the set of floating-point elements in the same intervals.</p>
<p >For instance, [1, 100] * 2 will be transformed in [2, 200] and not in [2][4][6]...[200] like in <a class="el" href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e" title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a>. Note that this would be similar to a InverseDivisionBy(), but not quite the same because if we look for {x ∈ Int64, ∃ e ∈ D, x / coeff = e}, then we will get [2, 201] in the case above. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00431">431</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a2fe0f92e6c1681f46239c1b14d091dea" name="a2fe0f92e6c1681f46239c1b14d091dea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fe0f92e6c1681f46239c1b14d091dea">&#9670;&nbsp;</a></span>ContinuousMultiplicationBy() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> ContinuousMultiplicationBy </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>coeff</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a superset of <a class="el" href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e" title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a> to avoid the explosion in the representation size. </p>
<p >This behaves as if we replace the set D of non-adjacent integer intervals by the set of floating-point elements in the same intervals.</p>
<p >For instance, [1, 100] * 2 will be transformed in [2, 200] and not in [2][4][6]...[200] like in <a class="el" href="classoperations__research_1_1_domain.html#a63a708c626b59b4504ddb879496c894e" title="Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}.">MultiplicationBy()</a>. Note that this would be similar to a InverseDivisionBy(), but not quite the same because if we look for {x ∈ Int64, ∃ e ∈ D, x / coeff = e}, then we will get [2, 201] in the case above. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00419">419</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="acecac80bcaa379f4d37af5a0f0b48d02" name="acecac80bcaa379f4d37af5a0f0b48d02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acecac80bcaa379f4d37af5a0f0b48d02">&#9670;&nbsp;</a></span>DivisionBy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> DivisionBy </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>coeff</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns {x ∈ Int64, ∃ e ∈ D, x = e / coeff}. </p>
<p >For instance Domain(1, 7).DivisionBy(2) == Domain(0, 3). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00450">450</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="ac8fc5d3706634db172d0d86970998bc3" name="ac8fc5d3706634db172d0d86970998bc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8fc5d3706634db172d0d86970998bc3">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">absl::InlinedVector&lt; <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a>, 1 &gt;::const_iterator end </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00432">432</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a46d31d56136315d2894193c3ac74ec66" name="a46d31d56136315d2894193c3ac74ec66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46d31d56136315d2894193c3ac74ec66">&#9670;&nbsp;</a></span>FixedValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t FixedValue </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the value of a fixed domain. </p>
<p ><a class="el" href="classoperations__research_1_1_domain.html#a826a01cb8175850ff6e5b833e4689959" title="Returns true iff the domain is reduced to a single value.">IsFixed()</a> must be true. This is the same as <a class="el" href="classoperations__research_1_1_domain.html#a8cf21a67f7d81a800ff912239bb2db64" title="Returns the min value of the domain.">Min()</a> or <a class="el" href="classoperations__research_1_1_domain.html#aa74ea8cd1b0767659f704b482d07c103" title="Returns the max value of the domain.">Max()</a> but allows for a more readable code and also crash in debug mode if called on a non fixed domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00237">237</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a818f990750b705242723d2e5b9958223" name="a818f990750b705242723d2e5b9958223"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a818f990750b705242723d2e5b9958223">&#9670;&nbsp;</a></span>FlattenedIntervals()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; int64_t &gt; FlattenedIntervals </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>This method returns the flattened list of interval bounds of the domain. </p>
<p >Thus the domain {0, 1, 2, 5, 8, 9, 10} will return [0, 2, 5, 5, 8, 10] (as a C++ std::vector&lt;int64_t&gt;, as a java or C# long[], as a python list of integers). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00606">606</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a647e4a17d1c9be74dede4116d0877d1d" name="a647e4a17d1c9be74dede4116d0877d1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a647e4a17d1c9be74dede4116d0877d1d">&#9670;&nbsp;</a></span>FromFlatIntervals()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> FromFlatIntervals </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int64_t &gt; &amp;&#160;</td>
<td class="paramname"><em>flat_intervals</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method is available in Python, Java and .NET. </p>
<p >It allows building a <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> object from a flattened list of intervals (long[] in Java and .NET, [0, 2, 5, 5, 8, 10] in python). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00178">178</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a32f2f5802ae5b535d979303ef1b7fc48" name="a32f2f5802ae5b535d979303ef1b7fc48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32f2f5802ae5b535d979303ef1b7fc48">&#9670;&nbsp;</a></span>FromFlatSpanOfIntervals()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> FromFlatSpanOfIntervals </td>
<td>(</td>
<td class="paramtype">absl::Span&lt; const int64_t &gt;&#160;</td>
<td class="paramname"><em>flat_intervals</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Same as <a class="el" href="classoperations__research_1_1_domain.html#a99f2a0dc67792cdc74b4792055b083d3" title="Creates a domain from the union of an unsorted list of intervals.">FromIntervals()</a> for a flattened representation (start, end, start, end, ...). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00165">165</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a99f2a0dc67792cdc74b4792055b083d3" name="a99f2a0dc67792cdc74b4792055b083d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99f2a0dc67792cdc74b4792055b083d3">&#9670;&nbsp;</a></span>FromIntervals()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> FromIntervals </td>
<td>(</td>
<td class="paramtype">absl::Span&lt; const <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a> &gt;&#160;</td>
<td class="paramname"><em>intervals</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a domain from the union of an unsorted list of intervals. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00157">157</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="ac2d88de67793063ad5f5e923ffd1c0eb" name="ac2d88de67793063ad5f5e923ffd1c0eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2d88de67793063ad5f5e923ffd1c0eb">&#9670;&nbsp;</a></span>FromValues()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> FromValues </td>
<td>(</td>
<td class="paramtype">std::vector&lt; int64_t &gt;&#160;</td>
<td class="paramname"><em>values</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a domain from the union of an unsorted list of integer values. </p>
<p >Input values may be repeated, with no consequence on the output </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00144">144</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a836e47cf167914557e5140fbccbc652c" name="a836e47cf167914557e5140fbccbc652c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a836e47cf167914557e5140fbccbc652c">&#9670;&nbsp;</a></span>FromVectorIntervals()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> FromVectorIntervals </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::vector&lt; int64_t &gt; &gt; &amp;&#160;</td>
<td class="paramname"><em>intervals</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method is available in Python, Java and .NET. </p>
<p >It allows building a <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> object from a list of intervals (long[][] in Java and .NET, [[0, 2], [5, 5], [8, 10]] in python). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00182">182</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a52ade49985f3a075425913618285a30d" name="a52ade49985f3a075425913618285a30d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52ade49985f3a075425913618285a30d">&#9670;&nbsp;</a></span>front()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a> front </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00426">426</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a835826c4c5129b74553042a357a721ff" name="a835826c4c5129b74553042a357a721ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a835826c4c5129b74553042a357a721ff">&#9670;&nbsp;</a></span>IntersectionWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> IntersectionWith </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the intersection of D and domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00303">303</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a9743d7273fb28e7fff6ed810c90a43f1" name="a9743d7273fb28e7fff6ed810c90a43f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9743d7273fb28e7fff6ed810c90a43f1">&#9670;&nbsp;</a></span>intervals()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; <a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a> &gt; intervals </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00440">440</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a1341b29865c5167a64de30c797672e4c" name="a1341b29865c5167a64de30c797672e4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1341b29865c5167a64de30c797672e4c">&#9670;&nbsp;</a></span>InverseMultiplicationBy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> InverseMultiplicationBy </td>
<td>(</td>
<td class="paramtype">const int64_t&#160;</td>
<td class="paramname"><em>coeff</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns {x ∈ Int64, ∃ e ∈ D, x * coeff = e}. </p>
<p >For instance Domain(1, 7).InverseMultiplicationBy(2) == Domain(1, 3). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00463">463</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a8e12342fc420701fbffd97025421575a" name="a8e12342fc420701fbffd97025421575a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e12342fc420701fbffd97025421575a">&#9670;&nbsp;</a></span>IsEmpty()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsEmpty </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if this is the empty set. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00198">198</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a826a01cb8175850ff6e5b833e4689959" name="a826a01cb8175850ff6e5b833e4689959"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a826a01cb8175850ff6e5b833e4689959">&#9670;&nbsp;</a></span>IsFixed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsFixed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true iff the domain is reduced to a single value. </p>
<p >The domain must not be empty. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00200">200</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a1f922def1b57974333f228818cd04e68" name="a1f922def1b57974333f228818cd04e68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f922def1b57974333f228818cd04e68">&#9670;&nbsp;</a></span>IsIncludedIn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IsIncludedIn </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true iff D is included in the given domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00253">253</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="aa74ea8cd1b0767659f704b482d07c103" name="aa74ea8cd1b0767659f704b482d07c103"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa74ea8cd1b0767659f704b482d07c103">&#9670;&nbsp;</a></span>Max()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t Max </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the max value of the domain. </p>
<p >The domain must not be empty. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00219">219</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a8cf21a67f7d81a800ff912239bb2db64" name="a8cf21a67f7d81a800ff912239bb2db64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cf21a67f7d81a800ff912239bb2db64">&#9670;&nbsp;</a></span>Min()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t Min </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the min value of the domain. </p>
<p >The domain must not be empty. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00214">214</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a63a708c626b59b4504ddb879496c894e" name="a63a708c626b59b4504ddb879496c894e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63a708c626b59b4504ddb879496c894e">&#9670;&nbsp;</a></span>MultiplicationBy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> MultiplicationBy </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>coeff</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool *&#160;</td>
<td class="paramname"><em>exact</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns {x ∈ Int64, ∃ e ∈ D, x = e * coeff}. </p>
<p >Note that because the resulting domain will only contains multiple of coeff, the size of intervals.size() can become really large. If it is larger than a fixed constant, exact will be set to false and the result will be set to ContinuousMultiplicationBy(coeff).</p>
<p >Note that if you multiply by a negative coeff, kint64min will be dropped from the result even if it was here due to how this is implemented. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00382">382</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a1e3aa02e2d8300db5f1fc12f6b3228fa" name="a1e3aa02e2d8300db5f1fc12f6b3228fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e3aa02e2d8300db5f1fc12f6b3228fa">&#9670;&nbsp;</a></span>Negation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> Negation </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns {x ∈ Int64, ∃ e ∈ D, x = -e}. </p>
<p >Note in particular that if the negation of Int64 is not Int64 but Int64 \ {kint64min} !! </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00282">282</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a3dcbf23ccbed61ee64ec08a934f57a9c" name="a3dcbf23ccbed61ee64ec08a934f57a9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3dcbf23ccbed61ee64ec08a934f57a9c">&#9670;&nbsp;</a></span>NumIntervals()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int NumIntervals </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Basic read-only std::vector&lt;&gt; wrapping to view a <a class="el" href="classoperations__research_1_1_domain.html" title="We call domain any subset of Int64 = [kint64min, kint64max].">Domain</a> as a sorted list of non-adjacent intervals. </p>
<p >Note that we don't expose size() which might be confused with the number of values in the domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00425">425</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a57af699c15e6bb8762dbfe47ae7f3441" name="a57af699c15e6bb8762dbfe47ae7f3441"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57af699c15e6bb8762dbfe47ae7f3441">&#9670;&nbsp;</a></span>operator!=()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool operator!= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00416">416</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a4e5a75821e16c8a560b487d3b1528a14" name="a4e5a75821e16c8a560b487d3b1528a14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e5a75821e16c8a560b487d3b1528a14">&#9670;&nbsp;</a></span>operator&lt;()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool operator&lt; </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Lexicographic order on the <a class="el" href="classoperations__research_1_1_domain.html#a9743d7273fb28e7fff6ed810c90a43f1">intervals()</a> representation. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00615">615</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a933201e44113f3b11e464ea9daa85f0a" name="a933201e44113f3b11e464ea9daa85f0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a933201e44113f3b11e464ea9daa85f0a">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy operator (mandatory as we define the move operator). </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00091">91</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="ace5d8c40e807de5ec1a9eb087dc276ed" name="ace5d8c40e807de5ec1a9eb087dc276ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace5d8c40e807de5ec1a9eb087dc276ed">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp; operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Move operator. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00100">100</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a9cab9b78b4670f5a40bfe367b4f3988b" name="a9cab9b78b4670f5a40bfe367b4f3988b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cab9b78b4670f5a40bfe367b4f3988b">&#9670;&nbsp;</a></span>operator==()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool operator== </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00412">412</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a5dafcadd44c9f3cd736efe13578ac0d7" name="a5dafcadd44c9f3cd736efe13578ac0d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5dafcadd44c9f3cd736efe13578ac0d7">&#9670;&nbsp;</a></span>operator[]()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structoperations__research_1_1_closed_interval.html">ClosedInterval</a> operator[] </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00428">428</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a93b23d6d33373e9a7067445d43389bad" name="a93b23d6d33373e9a7067445d43389bad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93b23d6d33373e9a7067445d43389bad">&#9670;&nbsp;</a></span>PositiveDivisionBySuperset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> PositiveDivisionBySuperset </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>divisor</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a superset of {x ∈ Int64, ∃ e ∈ D, ∃ d ∈ divisor, x = e / d }. </p>
<p >We check that divisor is strictly positive. For now we just intersect with the min/max possible value. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00521">521</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="ae4bddf829edf1817ecffe94dcc2c6260" name="ae4bddf829edf1817ecffe94dcc2c6260"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4bddf829edf1817ecffe94dcc2c6260">&#9670;&nbsp;</a></span>PositiveModuloBySuperset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> PositiveModuloBySuperset </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>modulo</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a superset of {x ∈ Int64, ∃ e ∈ D, ∃ m ∈ modulo, x = e % m }. </p>
<p >We check that modulo is strictly positive. The sign of the modulo depends on the sign of e. We compute the exact min/max if the modulo is fixed, otherwise we will just return a superset. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00507">507</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="abd2c59687cc53dda333d0f18c457389b" name="abd2c59687cc53dda333d0f18c457389b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd2c59687cc53dda333d0f18c457389b">&#9670;&nbsp;</a></span>RelaxIfTooComplex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> RelaxIfTooComplex </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>If <a class="el" href="classoperations__research_1_1_domain.html#a3dcbf23ccbed61ee64ec08a934f57a9c" title="Basic read-only std::vector&lt;&gt; wrapping to view a Domain as a sorted list of non-adjacent intervals.">NumIntervals()</a> is too large, this return a superset of the domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00374">374</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="aee800549042643f64022ca6a1e554fa4" name="aee800549042643f64022ca6a1e554fa4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee800549042643f64022ca6a1e554fa4">&#9670;&nbsp;</a></span>SimplifyUsingImpliedDomain()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> SimplifyUsingImpliedDomain </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>implied_domain</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Advanced usage. </p>
<p >Given some <em>implied</em> information on this domain that is assumed to be always true (i.e. only values in the intersection with implied domain matter), this function will simplify the current domain without changing the set of "possible values".</p>
<p >More precisely, this will:</p><ul>
<li>Take the intersection with implied_domain.</li>
<li>Minimize the number of intervals. For example, if the domain is [1,2][4] and implied is [1][4], then the domain can be relaxed to [1, 4] to simplify its complexity without changing the set of admissible value assuming only implied values can be seen.</li>
<li>Restrict as much as possible the bounds of the remaining intervals. For example, if the input is [1,2] and implied is [0,4], then the domain will not be changed.</li>
</ul>
<p >Note that <b>domain.SimplifyUsingImpliedDomain(domain)</b> will just return [domain.Min(), domain.Max()]. This is meant to be applied to the right-hand side of a constraint to make its propagation more efficient. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00558">558</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a572bd92c25ebc67c72137fd59e53f6d6" name="a572bd92c25ebc67c72137fd59e53f6d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a572bd92c25ebc67c72137fd59e53f6d6">&#9670;&nbsp;</a></span>Size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t Size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of elements in the domain. </p>
<p >It is capped at kint64max </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00202">202</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="aa070cf76ca3ef43a3b8db17c77d35669" name="aa070cf76ca3ef43a3b8db17c77d35669"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa070cf76ca3ef43a3b8db17c77d35669">&#9670;&nbsp;</a></span>SmallestValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t SmallestValue </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the value closest to zero. </p>
<p >If there is a tie, pick positive one. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00224">224</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="ac90f7cc5e58926631a01fd122af44cab" name="ac90f7cc5e58926631a01fd122af44cab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac90f7cc5e58926631a01fd122af44cab">&#9670;&nbsp;</a></span>SquareSuperset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> SquareSuperset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a superset of {x ∈ Int64, ∃ y ∈ D, x = y * y }. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00528">528</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a19c380b03cea21d7ac7325136a131ff0" name="a19c380b03cea21d7ac7325136a131ff0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19c380b03cea21d7ac7325136a131ff0">&#9670;&nbsp;</a></span>ToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string ToString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a compact string of a vector of intervals like "[1,4][6][10,20]". </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00630">630</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="a5919f86aede74172b7fea05ebdb58975" name="a5919f86aede74172b7fea05ebdb58975"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5919f86aede74172b7fea05ebdb58975">&#9670;&nbsp;</a></span>UnionWith()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a> UnionWith </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classoperations__research_1_1_domain.html">Domain</a> &amp;&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the union of D and domain. </p>
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8cc_source.html#l00342">342</a> of file <a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a>.</p>
</div>
</div>
<a id="ade71ed1801ba29c7190c387511f76044" name="ade71ed1801ba29c7190c387511f76044"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade71ed1801ba29c7190c387511f76044">&#9670;&nbsp;</a></span>Values() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structoperations__research_1_1_domain_1_1_domain_iterator_begin_end.html">DomainIteratorBeginEnd</a> Values </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const &amp;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00213">213</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<a id="a3b42c1ad06b5b9b5fde540882b1b074c" name="a3b42c1ad06b5b9b5fde540882b1b074c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b42c1ad06b5b9b5fde540882b1b074c">&#9670;&nbsp;</a></span>Values() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structoperations__research_1_1_domain_1_1_domain_iterator_begin_end_with_ownership.html">DomainIteratorBeginEndWithOwnership</a> Values </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const &amp;&amp;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sorted__interval__list_8h_source.html#l00214">214</a> of file <a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="sorted__interval__list_8h_source.html">sorted_interval_list.h</a></li>
<li><a class="el" href="sorted__interval__list_8cc_source.html">sorted_interval_list.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.18-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceoperations__research.html">operations_research</a></li><li class="navelem"><a class="el" href="classoperations__research_1_1_domain.html">Domain</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.9.3 </li>
</ul>
</div>
</body>
</html>