|
|
|
/***************************************************************************
|
|
|
|
* Copyright (C) 2007 by Rajko Albrecht ral@alwins-world.de *
|
|
|
|
* http://kdesvn.alwins-world.de/ *
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
* This program is distributed in the hope that it will be useful, *
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
|
|
* GNU General Public License for more details. *
|
|
|
|
* *
|
|
|
|
* You should have received a copy of the GNU General Public License *
|
|
|
|
* along with this program; if not, write to the *
|
|
|
|
* Free Software Foundation, Inc., *
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include "diffoptions.hpp"
|
|
|
|
#include "stringarray.hpp"
|
|
|
|
#include "pool.hpp"
|
|
|
|
|
|
|
|
#include <svn_diff.h>
|
|
|
|
|
|
|
|
namespace svn
|
|
|
|
{
|
|
|
|
struct DiffOptionsData
|
|
|
|
{
|
|
|
|
DiffOptions::IgnoreSpace _ignorespace;
|
|
|
|
bool _ignoreeol;
|
|
|
|
bool _showc;
|
|
|
|
|
|
|
|
DiffOptionsData()
|
|
|
|
{
|
|
|
|
_ignorespace=DiffOptions::IgnoreSpaceNone;
|
|
|
|
_ignoreeol = _showc = false;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
DiffOptions::DiffOptions()
|
|
|
|
:m_data(new DiffOptionsData())
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void DiffOptions::init(const svn_diff_file_options_t*_diffopts)
|
|
|
|
{
|
|
|
|
#if ((SVN_VER_MAJOR == 1) && (SVN_VER_MINOR >= 4)) || (SVN_VER_MAJOR > 1)
|
|
|
|
m_data->_ignoreeol = _diffopts->ignore_eol_style;
|
|
|
|
|
|
|
|
#if ((SVN_VER_MAJOR == 1) && (SVN_VER_MINOR >= 5)) || (SVN_VER_MAJOR > 1)
|
|
|
|
m_data->_showc = _diffopts->show_c_function;
|
|
|
|
#else
|
|
|
|
m_data->_showc = false;
|
|
|
|
#endif
|
|
|
|
switch (_diffopts->ignore_space) {
|
|
|
|
case svn_diff_file_ignore_space_change:
|
|
|
|
m_data->_ignorespace = IgnoreSpaceChange;
|
|
|
|
break;
|
|
|
|
case svn_diff_file_ignore_space_all:
|
|
|
|
m_data->_ignorespace = IgnoreSpaceAll;
|
|
|
|
break;
|
|
|
|
case svn_diff_file_ignore_space_none:
|
|
|
|
default:
|
|
|
|
m_data->_ignorespace = IgnoreSpaceNone;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
Q_UNUSED(_diffopts);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
DiffOptions::DiffOptions(const TQStringList&options)
|
|
|
|
:m_data(new DiffOptionsData())
|
|
|
|
{
|
|
|
|
#if ((SVN_VER_MAJOR == 1) && (SVN_VER_MINOR >= 4)) || (SVN_VER_MAJOR > 1)
|
|
|
|
Pool pool;
|
|
|
|
StringArray _ar(options);
|
|
|
|
svn_diff_file_options_t * _diffopts = svn_diff_file_options_create(pool);
|
|
|
|
if (_diffopts) {
|
|
|
|
svn_error_t*error = svn_diff_file_options_parse(_diffopts,_ar.array(pool),pool);
|
|
|
|
if (error==0) {
|
|
|
|
init(_diffopts);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
Q_UNUSED(options)
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
DiffOptions::DiffOptions(const svn_diff_file_options_t*options)
|
|
|
|
:m_data(new DiffOptionsData())
|
|
|
|
{
|
|
|
|
#if ((SVN_VER_MAJOR == 1) && (SVN_VER_MINOR >= 4)) || (SVN_VER_MAJOR > 1)
|
|
|
|
if (options) {
|
|
|
|
init(options);
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
Q_UNUSED(options)
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
svn_diff_file_options_t*DiffOptions::options(const Pool&pool)const
|
|
|
|
{
|
|
|
|
#if ((SVN_VER_MAJOR == 1) && (SVN_VER_MINOR >= 4)) || (SVN_VER_MAJOR > 1)
|
|
|
|
svn_diff_file_options_t * _diffopts = svn_diff_file_options_create(pool);
|
|
|
|
_diffopts->ignore_eol_style = m_data->_ignoreeol;
|
|
|
|
#if ((SVN_VER_MAJOR == 1) && (SVN_VER_MINOR >= 5)) || (SVN_VER_MAJOR > 1)
|
|
|
|
_diffopts->show_c_function = m_data->_showc;
|
|
|
|
#endif
|
|
|
|
switch (m_data->_ignorespace) {
|
|
|
|
case IgnoreSpaceChange:
|
|
|
|
_diffopts->ignore_space=svn_diff_file_ignore_space_change;
|
|
|
|
break;
|
|
|
|
case IgnoreSpaceAll:
|
|
|
|
_diffopts->ignore_space=svn_diff_file_ignore_space_all;
|
|
|
|
break;
|
|
|
|
case IgnoreSpaceNone:
|
|
|
|
default:
|
|
|
|
_diffopts->ignore_space=svn_diff_file_ignore_space_none;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return _diffopts;
|
|
|
|
#else
|
|
|
|
Q_UNUSED(pool);
|
|
|
|
return 0;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
DiffOptions::DiffOptions(const DiffOptions&old)
|
|
|
|
:m_data(new DiffOptionsData())
|
|
|
|
{
|
|
|
|
m_data->_showc = old.m_data->_showc;
|
|
|
|
m_data->_ignorespace=old.m_data->_ignorespace;
|
|
|
|
m_data->_ignoreeol=old.m_data->_ignoreeol;
|
|
|
|
}
|
|
|
|
|
|
|
|
DiffOptions::~DiffOptions()
|
|
|
|
{
|
|
|
|
delete m_data;
|
|
|
|
m_data=0;
|
|
|
|
}
|
|
|
|
}
|