4. Araxis Merge File Comparison Report

Produced by Araxis Merge on Sat Apr 12 16:07:30 2003. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a reasonably standards compliant browser such as the latest version of Internet Explorer. For optimum results when printing this report, enable printing of background images and colours in your browser and use landscape orientation.

4.1 Files compared

#FileLocationLast Modified
1compareutil.cppc:\scm\dev\Software\Products\merge\6.0\Merge\compareMon Mar 17 01:01:18 2003 UTC
2compareutil.cppc:\scm\dev\Software\Products\merge\6.5\Merge\compareTue Apr 8 00:52:34 2003 UTC

4.2 Comparison summary

DescriptionBetween
Files 1 and 2
BlocksLines
Unchanged12486
Changed1128
Inserted00
Removed00

4.3 Comparison options

WhitespaceAll differences in whitespace within lines are ignored
Character caseDifferences in character case are significant
Line endingsDifferences in line endings (CR and LF characters) are ignored
CR/LF charactersHidden in comparison detail

4.4 Active regular expressions

No regular expressions were active.

4.5 Comparison detail

1 #include "stdafx.h" 1 #include "stdafx.h"
2 #include "compareutil.h" 2 #include "compareutil.h"
3 #include "merge.h" 3 #include "merge.h"
4  4 
5 namespace compareutil 5 namespace compareutil
6 { 6 {
7   // A handle to the active file comparison. 7   // A handle to the active file comparison.
8   // 8   //
9  9 
10   Merge ::IFileComparison2Ptr g_pFile; 10   Merge65::IFileComparison Ptr g_pFile;
11   Merge ::IFolderComparisonPtr g_pFolder; 11   Merge65::IFolderComparisonPtr g_pFolder;
12  12 
13  13 
14   // Function information. 14   // Function information.
15   // 15   //
16  16 
17   _ATL_FUNC_INFO folder_fninfo[] =  17   _ATL_FUNC_INFO folder_fninfo[] = 
18   { 18   {
19     { CC_STDCALL, VT_EMPTY, 1, { VT_I4 } }, 19     { CC_STDCALL, VT_EMPTY, 1, { VT_I4 } },
20     { CC_STDCALL, VT_EMPTY, 0 } 20     { CC_STDCALL, VT_EMPTY, 0 }
21   }; 21   };
22  22 
23   _ATL_FUNC_INFO file_fninfo[] =  23   _ATL_FUNC_INFO file_fninfo[] = 
24   { 24   {
25     { CC_STDCALL, VT_EMPTY, 4, { VT_I4, VT_I4, VT_I4, VT_I4 } }, 25     { CC_STDCALL, VT_EMPTY, 2, { VT_I4, VT_I4  } },
26     { CC_STDCALL, VT_EMPTY, 0 } 26     { CC_STDCALL, VT_EMPTY, 0 }
27   }; 27   };
28  28 
29   // Output an informational message 29   // Output an informational message
30   void  30   void 
31   DisplayInfo( 31   DisplayInfo(
32     LPCTSTR pszText) 32     LPCTSTR pszText)
33   { 33   {
34   #ifdef _CONSOLE 34   #ifdef _CONSOLE
35     _ftprintf(stdout, _T("Araxis Merge Command Line Compare Utility v%s\n\n%s\n"), MERGE_VERSION, pszText); 35     _ftprintf(stdout, _T("Araxis Merge Command Line Compare Utility v%s\n\n%s\n"), MERGE_VERSION, pszText);
(270 unchanged lines omitted)
306     TCHAR szMessage[1024]; 306     TCHAR szMessage[1024];
307     _tcscpy(szMessage, _T("Compare encountered a serious error while\n")); 307     _tcscpy(szMessage, _T("Compare encountered a serious error while\n"));
308     _tcscat(szMessage, lpszWhileTrying); 308     _tcscat(szMessage, lpszWhileTrying);
309  309 
310     DisplayError(szMessage); 310     DisplayError(szMessage);
311   } 311   }
312  312 
313   // Create a new folder comparison automation object. 313   // Create a new folder comparison automation object.
314   // 314   //
315  315 
316   void getAutomationObject(Merge ::IApplicationPtr pApp, Merge ::IFolderComparisonPtr& automationObject) 316   void getAutomationObject(Merge65::IApplicationPtr pApp, Merge65::IFolderComparisonPtr& automationObject)
317   { 317   {
318     automationObject = pApp->FolderComparison; 318     automationObject = pApp->FolderComparison;
319   } 319   }
320  320 
321   // Create a new file comparison automation object. 321   // Create a new file comparison automation object.
322   // 322   //
323  323 
324   void getAutomationObject(Merge ::IApplicationPtr pApp, Merge ::IFileComparison2Ptr& automationObject) 324   void getAutomationObject(Merge65::IApplicationPtr pApp, Merge65::IFileComparison Ptr& automationObject)
325   { 325   {
326     automationObject = pApp->FileComparison; 326     automationObject = pApp->FileComparison;
327   } 327   }
328  328 
329   // Do a three-way merge on a file comparison, and return the number of conflicts (or 0 if there weren't any). 329   // Do a three-way merge on a file comparison, and return the number of conflicts (or 0 if there weren't any).
330   // (Note: This is a no-op for folder comparisons) 330   // (Note: This is a no-op for folder comparisons)
331  331 
332   long threeWayMerge(Merge ::IFolderComparisonPtr automationObject) 332   long threeWayMerge(Merge65::IFolderComparisonPtr automationObject)
333   { 333   {
334     UNREFERENCED_PARAMETER(automationObject); 334     UNREFERENCED_PARAMETER(automationObject);
335     return 0; 335     return 0;
336   } 336   }
337  337 
338   long threeWayMerge(Merge ::IFileComparison2Ptr automationObject) 338   long threeWayMerge(Merge65::IFileComparison Ptr automationObject)
339   { 339   {
340     return automationObject->ThreeWayMerge(); 340     return automationObject->ThreeWayMerge();
341   } 341   }
342  342 
343   // This happens automatically in the Compare method. 343   // This happens automatically in the Compare method.
344   // 344   //
345  345 
346   void setThreeWay(Merge ::IFolderComparisonPtr automationObject) 346   void setThreeWay(Merge65::IFolderComparisonPtr automationObject)
347   { 347   {
348   } 348   }
349  349 
350   // Force a file comparison window into three-way mode. 350   // Force a file comparison window into three-way mode.
351   // 351   //
352  352 
353   void setThreeWay(Merge ::IFileComparison2Ptr automationObject) 353   void setThreeWay(Merge65::IFileComparison Ptr automationObject)
354   { 354   {
355     automationObject->put_ViewType(Merge ::fvtThreeWay); 355     automationObject->put_ViewType(Merge65::fvtThreeWay);
356   } 356   }
357  357 
358   // Starts a folder comparison. The type of comparison is defined 358   // Starts a folder comparison. The type of comparison is defined
359   // by the arguments to this method. If instructed to wait for 359   // by the arguments to this method. If instructed to wait for
360   // the comparison to complete, this method sets up a sink for 360   // the comparison to complete, this method sets up a sink for
361   // events from the folder comparison window. It is up to the caller 361   // events from the folder comparison window. It is up to the caller
362   // to set up a message pump and wait for the event sink object 362   // to set up a message pump and wait for the event sink object
363   // (a CFolderComparisonWaitObject) to post a WM_QUIT message to the 363   // (a CFolderComparisonWaitObject) to post a WM_QUIT message to the
364   // main message queue. 364   // main message queue.
365   // 365   //
(1 unchanged lines omitted)
367   ReturnCode DoFolderComparison( 367   ReturnCode DoFolderComparison(
368     const bool& bTwoWay, 368     const bool& bTwoWay,
369     const bool& bMaximize, 369     const bool& bMaximize,
370     const bool& bWait, 370     const bool& bWait,
371     const StringVector& arguments, 371     const StringVector& arguments,
372     const bool& bSetTitles, 372     const bool& bSetTitles,
373     const StringVector& titles) 373     const StringVector& titles)
374   { 374   {
375     return DoComparison< 375     return DoComparison<
376       CFolderComparisonWaitObject,  376       CFolderComparisonWaitObject, 
377       Merge ::_FolderComparisonEvents,  377       Merge65::_FolderComparisonEvents, 
378       Merge ::IFolderComparisonPtr>( 378       Merge65::IFolderComparisonPtr>(
379         bTwoWay, bMaximize,  379         bTwoWay, bMaximize, 
380         bWait, arguments,  380         bWait, arguments, 
381         bSetTitles, titles,  381         bSetTitles, titles, 
382         g_pFolder); 382         g_pFolder);
383   } 383   }
384  384 
385   // Starts a file comparison. The type of comparison is defined 385   // Starts a file comparison. The type of comparison is defined
386   // by the arguments to this method. If instructed to wait for 386   // by the arguments to this method. If instructed to wait for
387   // the comparison to complete, this method sets up a sink for 387   // the comparison to complete, this method sets up a sink for
388   // events from the file comparison window. It is up to the caller 388   // events from the file comparison window. It is up to the caller
(7 unchanged lines omitted)
396     const bool& bMaximize, 396     const bool& bMaximize,
397     const bool& bWait, 397     const bool& bWait,
398     const StringVector& arguments, 398     const StringVector& arguments,
399     const bool& bSetTitles, 399     const bool& bSetTitles,
400     const StringVector& titles, 400     const StringVector& titles,
401     const bool& bMerge, 401     const bool& bMerge,
402     const bool& bTestConflicts) 402     const bool& bTestConflicts)
403   { 403   {
404     ReturnCode nResult = DoComparison< 404     ReturnCode nResult = DoComparison<
405       CFileComparisonWaitObject,  405       CFileComparisonWaitObject, 
406       Merge ::_FileComparisonEvents,  406       Merge65::_FileComparisonEvents, 
407       Merge ::IFileComparison2Ptr>( 407       Merge65::IFileComparison Ptr>(
408         bTwoWay, bMaximize,  408         bTwoWay, bMaximize, 
409         bWait, arguments,  409         bWait, arguments, 
410         bSetTitles, titles,  410         bSetTitles, titles, 
411         g_pFile, 411         g_pFile,
412         bMerge, 412         bMerge,
413         bTestConflicts); 413         bTestConflicts);
414  414 
415     if (nResult == rcSucceeded) 415     if (nResult == rcSucceeded)
416       { 416       {
417         if (bTwoWay) 417         if (bTwoWay)
(73 unchanged lines omitted)
491               g_pFile.Release(); 491               g_pFile.Release();
492           } 492           }
493  493 
494         CoUninitialize(); 494         CoUninitialize();
495       } 495       }
496  496 
497     return nResult; 497     return nResult;
498   } 498   }
499  499 
500 } 500 }