scmdiff.h revision 739c9e0e5fccb99475b8202ead8fc5665b2fa64c
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/* $Id$ */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @file
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * IPRT Testcase / Tool - Source Code Massager Diff Code.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/*
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Copyright (C) 2010-2012 Oracle Corporation
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync *
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * available from http://www.virtualbox.org. This file is free software;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync */
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync#ifndef ___scmdiff_h___
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync#define ___scmdiff_h___
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include <iprt/stream.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include "scmstream.h"
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncRT_C_DECLS_BEGIN
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/**
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Diff state.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef struct SCMDIFFSTATE
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync{
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync size_t cDiffs;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync const char *pszFilename;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync PSCMSTREAM pLeft;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync PSCMSTREAM pRight;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
61fa69e2bc9fc9e7490feed1c020273f3ddb238dvboxsync /** Whether to ignore end of line markers when diffing. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync bool fIgnoreEol;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** Whether to ignore trailing whitespace. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync bool fIgnoreTrailingWhite;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** Whether to ignore leading whitespace. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync bool fIgnoreLeadingWhite;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** Whether to print special characters in human readable form or not. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync bool fSpecialChars;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** The tab size. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync size_t cchTab;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /** Where to push the diff. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync PRTSTREAM pDiff;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync} SCMDIFFSTATE;
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsync/** Pointer to a diff state. */
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsynctypedef SCMDIFFSTATE *PSCMDIFFSTATE;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncsize_t ScmDiffStreams(const char *pszFilename, PSCMSTREAM pLeft, PSCMSTREAM pRight, bool fIgnoreEol,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync bool fIgnoreLeadingWhite, bool fIgnoreTrailingWhite, bool fSpecialChars,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync size_t cchTab, PRTSTREAM pDiff);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
afed5ab737f4aacfae3fe73776f40e989190a7cavboxsyncRT_C_DECLS_END
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync