<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_75) on Mon May 18 03:56:40 EDT 2015 -->
<title>ProximityEObjectMatcher.DistanceFunction (EMF Compare API Specification)</title>
<meta name="date" content="2015-05-18">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="ProximityEObjectMatcher.DistanceFunction (EMF Compare API Specification)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ProximityEObjectMatcher.DistanceFunction.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><span style='font-size:small'><b>EMF Compare</b><br>3.2.0.201505180755</span></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.html" title="class in org.eclipse.emf.compare.match.eobject"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/eclipse/emf/compare/match/eobject/ScopeQuery.html" title="interface in org.eclipse.emf.compare.match.eobject"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.DistanceFunction.html" target="_top">Frames</a></li>
<li><a href="ProximityEObjectMatcher.DistanceFunction.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.eclipse.emf.compare.match.eobject</div>
<h2 title="Interface ProximityEObjectMatcher.DistanceFunction" class="title">Interface ProximityEObjectMatcher.DistanceFunction</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../../org/eclipse/emf/compare/match/eobject/CachingDistance.html" title="class in org.eclipse.emf.compare.match.eobject">CachingDistance</a>, <a href="../../../../../../org/eclipse/emf/compare/match/eobject/EditionDistance.html" title="class in org.eclipse.emf.compare.match.eobject">EditionDistance</a></dd>
</dl>
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../../../../org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.html" title="class in org.eclipse.emf.compare.match.eobject">ProximityEObjectMatcher</a></dd>
</dl>
<hr>
<br>
<pre>public static interface <span class="strong">ProximityEObjectMatcher.DistanceFunction</span></pre>
<div class="block">This represent a distance function used by the <a href="../../../../../../org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.html" title="class in org.eclipse.emf.compare.match.eobject"><code>ProximityEObjectMatcher</code></a> to compare EObjects and
 retrieve the closest EObject from one side to another. Axioms of the distance are supposed to be
 respected more especially :
 <ul>
 <li>symetry : dist(a,b) == dist(b,a)</li>
 <li>separation :dist(a,a) == 0</li>
 </ul>
 Triangular inequality is not leveraged with the current implementation but might be at some point to
 speed up the indexing. <br/>
 computing the distance between two EObjects should be a <b> fast operation</b> or the scalability of
 the whole matching phase will be poor.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.DistanceFunction.html#areIdentic(org.eclipse.emf.compare.Comparison,%20org.eclipse.emf.ecore.EObject,%20org.eclipse.emf.ecore.EObject)">areIdentic</a></strong>(<a href="../../../../../../org/eclipse/emf/compare/Comparison.html" title="interface in org.eclipse.emf.compare">Comparison</a>&nbsp;inProgress,
          <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;a,
          <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;b)</code>
<div class="block">Check that two objects are equals from the distance function point of view (distance should be 0)
 You should prefer this method when you just want to check objects are not equals enabling the
 distance to stop sooner.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.DistanceFunction.html#distance(org.eclipse.emf.compare.Comparison,%20org.eclipse.emf.ecore.EObject,%20org.eclipse.emf.ecore.EObject)">distance</a></strong>(<a href="../../../../../../org/eclipse/emf/compare/Comparison.html" title="interface in org.eclipse.emf.compare">Comparison</a>&nbsp;inProgress,
        <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;a,
        <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;b)</code>
<div class="block">Return the distance between two EObjects.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="distance(org.eclipse.emf.compare.Comparison, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>distance</h4>
<pre>double&nbsp;distance(<a href="../../../../../../org/eclipse/emf/compare/Comparison.html" title="interface in org.eclipse.emf.compare">Comparison</a>&nbsp;inProgress,
              <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;a,
              <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;b)</pre>
<div class="block">Return the distance between two EObjects. When the two objects should considered as completely
 different the implementation is expected to return Double.MAX_VALUE.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>inProgress</code> - the comparison being processed right now. This might be used for the distance to
            retrieve other matches for instance.</dd><dd><code>a</code> - first object.</dd><dd><code>b</code> - second object.</dd>
<dt><span class="strong">Returns:</span></dt><dd>the distance between the two EObjects or Double.MAX_VALUE when the objects are considered
         too different to be the same.</dd></dl>
</li>
</ul>
<a name="areIdentic(org.eclipse.emf.compare.Comparison, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>areIdentic</h4>
<pre>boolean&nbsp;areIdentic(<a href="../../../../../../org/eclipse/emf/compare/Comparison.html" title="interface in org.eclipse.emf.compare">Comparison</a>&nbsp;inProgress,
                 <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;a,
                 <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EObject.html?is-external=true" title="class or interface in org.eclipse.emf.ecore">EObject</a>&nbsp;b)</pre>
<div class="block">Check that two objects are equals from the distance function point of view (distance should be 0)
 You should prefer this method when you just want to check objects are not equals enabling the
 distance to stop sooner.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>inProgress</code> - the comparison being processed right now. This might be used for the distance to
            retrieve other matches for instance.</dd><dd><code>a</code> - first object.</dd><dd><code>b</code> - second object.</dd>
<dt><span class="strong">Returns:</span></dt><dd>true of the two objects are equals, false otherwise.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ProximityEObjectMatcher.DistanceFunction.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><span style='font-size:small'><b>EMF Compare</b><br>3.2.0.201505180755</span></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.html" title="class in org.eclipse.emf.compare.match.eobject"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../org/eclipse/emf/compare/match/eobject/ScopeQuery.html" title="interface in org.eclipse.emf.compare.match.eobject"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/eclipse/emf/compare/match/eobject/ProximityEObjectMatcher.DistanceFunction.html" target="_top">Frames</a></li>
<li><a href="ProximityEObjectMatcher.DistanceFunction.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><br><span style='font-size:small;float:right'>Copyright (c) 2006, 2014 Obeo and others. All rights reserved.</span></small></p>
</body>
</html>
