File indexing completed on 2024-05-12 17:16:23

0001 /***************************************************************************
0002  *   Copyright (C) 2007-2009 by Rajko Albrecht  ral@alwins-world.de        *
0003  *   http://kdesvn.alwins-world.de/                                        *
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 http://kdesvn.alwins-world.de.           *
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 class QStringList;
0032 
0033 namespace svn
0034 {
0035 class Pool;
0036 /** c++ wrapper for svn_diffoptions_t
0037  *
0038  * This is needed until svnqt stops support for subversion prior 1.4
0039  */
0040 class SVNQT_EXPORT DiffOptions
0041 {
0042 public:
0043     enum IgnoreSpace {
0044         IgnoreSpaceNone,
0045         IgnoreSpaceChange,
0046         IgnoreSpaceAll
0047     };
0048 protected:
0049     DiffOptions::IgnoreSpace _ignorespace = DiffOptions::IgnoreSpaceNone;
0050     bool _ignoreeol = false;
0051     bool _showc = false;
0052 
0053     void init(const svn_diff_file_options_t *options);
0054 
0055 public:
0056     DiffOptions() = default;
0057     /** Initialize options with values depending on options.
0058      * Supported types are:
0059      * - --ignore-space-change, -b
0060      * - --ignore-all-space, -w
0061      * - --ignore-eol-style
0062      * - --unified, -u (for compatibility, does nothing).
0063      * @sa svn_diff_file_options_parse
0064      */
0065     explicit DiffOptions(const QStringList &options);
0066 
0067     /** Initialize options with values depending on options.
0068      * Only if build against subversion 1.4 or newer.
0069      */
0070     explicit DiffOptions(const svn_diff_file_options_t *options);
0071 
0072     svn_diff_file_options_t *options(const Pool &pool)const;
0073 };
0074 }
0075 
0076 #endif