File indexing completed on 2024-04-28 05:42:09

0001 /***************************************************************************
0002  *   Copyright (C) 2007-2009 by Rajko Albrecht  ral@alwins-world.de        *
0003  *   https://kde.org/applications/development/org.kde.kdesvn               *
0004  *                                                                         *
0005  * This program is free software; you can redistribute it and/or           *
0006  * modify it under the terms of the GNU Lesser General Public              *
0007  * License as published by the Free Software Foundation; either            *
0008  * version 2.1 of the License, or (at your option) any later version.      *
0009  *                                                                         *
0010  * This program is distributed in the hope that it will be useful,         *
0011  * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
0012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       *
0013  * Lesser General Public License for more details.                         *
0014  *                                                                         *
0015  * You should have received a copy of the GNU Lesser General Public        *
0016  * License along with this program (in the file LGPL.txt); if not,         *
0017  * write to the Free Software Foundation, Inc., 51 Franklin St,            *
0018  * Fifth Floor, Boston, MA  02110-1301  USA                                *
0019  *                                                                         *
0020  * This software consists of voluntary contributions made by many          *
0021  * individuals.  For exact contribution history, see the revision          *
0022  * history and logs, available at https://commits.kde.org/kdesvn.          *
0023  ***************************************************************************/
0024 
0025 #ifndef DIFF_OPTIONS_HPP
0026 #define DIFF_OPTIONS_HPP
0027 
0028 #include <svnqt/svnqt_defines.h>
0029 
0030 struct svn_diff_file_options_t;
0031 
0032 #include <QtContainerFwd>
0033 
0034 namespace svn
0035 {
0036 class Pool;
0037 /** c++ wrapper for svn_diffoptions_t
0038  *
0039  * This is needed until svnqt stops support for subversion prior 1.4
0040  */
0041 class SVNQT_EXPORT DiffOptions
0042 {
0043 public:
0044     enum IgnoreSpace { IgnoreSpaceNone, IgnoreSpaceChange, IgnoreSpaceAll };
0045 
0046 protected:
0047     DiffOptions::IgnoreSpace _ignorespace = DiffOptions::IgnoreSpaceNone;
0048     bool _ignoreeol = false;
0049     bool _showc = false;
0050 
0051     void init(const svn_diff_file_options_t *options);
0052 
0053 public:
0054     DiffOptions() = default;
0055     /** Initialize options with values depending on options.
0056      * Supported types are:
0057      * - --ignore-space-change, -b
0058      * - --ignore-all-space, -w
0059      * - --ignore-eol-style
0060      * - --unified, -u (for compatibility, does nothing).
0061      * @sa svn_diff_file_options_parse
0062      */
0063     explicit DiffOptions(const QStringList &options);
0064 
0065     /** Initialize options with values depending on options.
0066      * Only if build against subversion 1.4 or newer.
0067      */
0068     explicit DiffOptions(const svn_diff_file_options_t *options);
0069 
0070     svn_diff_file_options_t *options(const Pool &pool) const;
0071 };
0072 }
0073 
0074 #endif