diff options
Diffstat (limited to 'docs/doxygen/nel/a02833.html')
-rw-r--r-- | docs/doxygen/nel/a02833.html | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02833.html b/docs/doxygen/nel/a02833.html new file mode 100644 index 00000000..a8886a62 --- /dev/null +++ b/docs/doxygen/nel/a02833.html @@ -0,0 +1,189 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>NeL: TemplateSTRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem > class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.6 --> +<div class="qindex"> <form class="search" action="search.php" method="get"> +<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>STRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem > Class Template Reference</h1><code>#include <<a class="el" href="a05635.html">diff_tool.h</a>></code> +<p> +<hr><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<class ItemType, class Context, class GetIdentifier = TGetIdentifier<ItemType>, class GetHashValue = TGetHashValue<ItemType>, class TestItem = TTestItem<ItemType>><br> + class STRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem ></h3> + +ItemType must have a property named Identifier that uniquely identify each item. ItemType must have a property named HashValue that is used to determine the change between context.Addition and context.Reference vector. +<p> + +<p> +Definition at line <a class="el" href="a05635.html#l00374">374</a> of file <a class="el" href="a05635.html">diff_tool.h</a>.<table border=0 cellpadding=0 cellspacing=0> +<tr><td></td></tr> +<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02833.html#STRING__MANAGER_1_1CMakeDiffa0">makeDiff</a> (<a class="el" href="a02834.html">IDiffCallback</a> *callback, Context &context, bool skipFirstRecord=false)</td></tr> + +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="STRING__MANAGER_1_1CMakeDiffa0" doxytag="STRING_MANAGER::CMakeDiff::makeDiff" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" colspan="4"> +template<class ItemType, class Context, class GetIdentifier = TGetIdentifier<ItemType>, class GetHashValue = TGetHashValue<ItemType>, class TestItem = TTestItem<ItemType>> </td> + </tr> + <tr> + <td class="md" nowrap valign="top"> void <a class="el" href="a02833.html">STRING_MANAGER::CMakeDiff</a>< ItemType, Context, GetIdentifier, GetHashValue, TestItem >::makeDiff </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02834.html">IDiffCallback</a> * </td> + <td class="mdname" nowrap> <em>callback</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>Context & </td> + <td class="mdname" nowrap> <em>context</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>bool </td> + <td class="mdname" nowrap> <em>skipFirstRecord</em> = false</td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a05635.html#l00387">387</a> of file <a class="el" href="a05635.html">diff_tool.h</a>. +<p> +References <a class="el" href="a05646.html#l00225">index</a>, <a class="el" href="a02834.html#STRING__MANAGER_1_1CMakeDiff_1_1IDiffCallbacka0">STRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem >::IDiffCallback::onAdd()</a>, <a class="el" href="a02834.html#STRING__MANAGER_1_1CMakeDiff_1_1IDiffCallbacka1">STRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem >::IDiffCallback::onChanged()</a>, <a class="el" href="a02834.html#STRING__MANAGER_1_1CMakeDiff_1_1IDiffCallbacka2">STRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem >::IDiffCallback::onEquivalent()</a>, <a class="el" href="a02834.html#STRING__MANAGER_1_1CMakeDiff_1_1IDiffCallbacka3">STRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem >::IDiffCallback::onRemove()</a>, <a class="el" href="a02834.html#STRING__MANAGER_1_1CMakeDiff_1_1IDiffCallbacka4">STRING_MANAGER::CMakeDiff< ItemType, Context, GetIdentifier, GetHashValue, TestItem >::IDiffCallback::onSwap()</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00388 { +00389 <span class="preprocessor">#ifdef NL_DEBUG</span> +00390 <span class="preprocessor"></span> <span class="comment">// compile time checking</span> +00391 <span class="comment">// Context::iterator testIt;</span> +00392 <span class="preprocessor">#endif</span> +00393 <span class="preprocessor"></span> GetIdentifier getIdentifier; +00394 GetHashValue getHashValue; +00395 <span class="comment">// compare the context.Reference an context.Addition file, remove any equivalent strings.</span> +00396 <a class="code" href="a04558.html#a15">uint</a> addCount, refCount; +00397 <span class="keywordflow">if</span> (skipFirstRecord) +00398 { +00399 addCount = 1; +00400 refCount = 1; +00401 } +00402 <span class="keywordflow">else</span> +00403 { +00404 addCount = 0; +00405 refCount=0; +00406 } +00407 +00408 <span class="keywordflow">while</span> (addCount < context.Addition.size() || refCount < context.Reference.size()) +00409 { +00410 <span class="keywordtype">bool</span> equal = <span class="keyword">true</span>; +00411 <span class="keywordflow">if</span> (addCount != context.Addition.size() && refCount != context.Reference.size()) +00412 { +00413 equal = getHashValue(context.Addition, addCount) == getHashValue(context.Reference, refCount); +00414 } +00415 +00416 <span class="comment">// vector<ItemType>::iterator it;</span> +00417 +00418 <span class="keywordflow">if</span> (addCount == context.Addition.size() +00419 || +00420 ( +00421 !equal +00422 && find_if(context.Addition.begin(), context.Addition.end(), TestItem(getIdentifier(context.Reference, refCount))) == context.Addition.end() +00423 ) +00424 ) +00425 { +00426 <span class="comment">// this can only be removal</span> +00427 callback->onRemove(addCount, refCount, context); +00428 context.Reference.erase(context.Reference.begin()+refCount); +00429 <span class="comment">// ++refCount;</span> +00430 } +00431 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (refCount == context.Reference.size() +00432 || +00433 ( +00434 !equal +00435 && find_if(context.Reference.begin(), context.Reference.end(), TestItem(getIdentifier(context.Addition, addCount))) == context.Reference.end() +00436 ) +00437 ) +00438 { +00439 <span class="comment">// this can only be context.Addition</span> +00440 callback->onAdd(addCount, refCount, context); +00441 context.Reference.insert(context.Reference.begin()+refCount, context.Addition[addCount]); +00442 ++refCount; +00443 ++addCount; +00444 } +00445 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (getIdentifier(context.Addition, addCount) != getIdentifier(context.Reference, refCount)) +00446 { +00447 <span class="comment">// swap two element.</span> +00448 <span class="comment">// Context::iterator it = find_if(context.Reference.begin(), context.Reference.end(), TestItem(getIdentifier(context.Addition, addCount)));</span> +00449 <span class="comment">// if (it == context.Reference.end())</span> +00450 +00451 <span class="keywordflow">if</span> (find_if( +00452 context.Reference.begin(), +00453 context.Reference.end(), +00454 TestItem(getIdentifier(context.Addition, addCount))) +00455 == context.Reference.end()) +00456 { +00457 <span class="comment">// context.Addition</span> +00458 callback->onAdd(addCount, refCount, context); +00459 context.Reference.insert(context.Reference.begin()+refCount, context.Addition[addCount]); +00460 ++refCount; +00461 ++addCount; +00462 } +00463 <span class="keywordflow">else</span> +00464 { +00465 <span class="comment">// nlassert(it != context.Reference.begin()+refCount);</span> +00466 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a566">index</a> = find_if(context.Reference.begin(), context.Reference.end(), TestItem(getIdentifier(context.Addition, addCount))) - context.Reference.begin(); +00467 +00468 <span class="comment">// callback->onSwap(it - context.Reference.begin(), refCount, context);</span> +00469 callback->onSwap(index, refCount, context); +00470 <span class="comment">// swap(*it, context.Reference[refCount]);</span> +00471 swap(context.Reference[index], context.Reference[refCount]); +00472 } +00473 } +00474 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (getHashValue(context.Addition, addCount) != getHashValue(context.Reference, refCount)) +00475 { +00476 <span class="comment">// changed element</span> +00477 callback->onChanged(addCount, refCount, context); +00478 ++refCount; +00479 ++addCount; +00480 } +00481 <span class="keywordflow">else</span> +00482 { +00483 <span class="comment">// same entry</span> +00484 callback->onEquivalent(addCount, refCount, context); +00485 addCount++; +00486 refCount++; +00487 } +00488 } +00489 } +</pre></div> </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="a05635.html">diff_tool.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 14:54:13 2004 for NeL by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 > +</a>1.3.6 </small></address> +</body> +</html> |