File indexing completed on 2024-04-28 05:42:11
0001 /* 0002 * Port for usage with qt-framework and development for kdesvn 0003 * Copyright (C) 2005-2009 by Rajko Albrecht (ral@alwins-world.de) 0004 * https://kde.org/applications/development/org.kde.kdesvn 0005 */ 0006 /* 0007 * ==================================================================== 0008 * Copyright (c) 2002-2005 The RapidSvn Group. All rights reserved. 0009 * dev@rapidsvn.tigris.org 0010 * 0011 * This library is free software; you can redistribute it and/or 0012 * modify it under the terms of the GNU Lesser General Public 0013 * License as published by the Free Software Foundation; either 0014 * version 2.1 of the License, or (at your option) any later version. 0015 * 0016 * This library is distributed in the hope that it will be useful, 0017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0019 * Lesser General Public License for more details. 0020 * 0021 * You should have received a copy of the GNU Lesser General Public 0022 * License along with this library (in the file LGPL.txt); if not, 0023 * write to the Free Software Foundation, Inc., 51 Franklin St, 0024 * Fifth Floor, Boston, MA 02110-1301 USA 0025 * 0026 * This software consists of voluntary contributions made by many 0027 * individuals. For exact contribution history, see the revision 0028 * history and logs, available at http://rapidsvn.tigris.org/. 0029 * ==================================================================== 0030 */ 0031 0032 #ifndef SVNQT_TARGETS_H 0033 #define SVNQT_TARGETS_H 0034 0035 #include <svnqt/svnqt_defines.h> 0036 #include <svnqt/svnqttypes.h> 0037 0038 // apr api 0039 #include <apr_tables.h> 0040 0041 #include <QList> 0042 #include <QtContainerFwd> 0043 0044 class QUrl; 0045 0046 namespace svn 0047 { 0048 // forward declarations 0049 class Pool; 0050 0051 /** 0052 * Encapsulation for Subversion target arrays handling 0053 */ 0054 class SVNQT_EXPORT Targets 0055 { 0056 public: 0057 /** 0058 * Constructor 0059 * 0060 * @param targets vector of paths 0061 */ 0062 explicit Targets(const svn::Paths &targets); 0063 0064 /** 0065 * Constructor 0066 * @param path a single paths 0067 */ 0068 Targets(const svn::Path &target); // krazy:exclude=explicit 0069 0070 /** 0071 * Constructor. Initializes list with just 0072 * one entry 0073 * 0074 * @param target 0075 */ 0076 Targets(const QString &target = QString()); // krazy:exclude=explicit 0077 0078 /** 0079 * Returns an apr array containing 0080 * char *. 0081 * 0082 * @param pool Pool used for conversion 0083 */ 0084 apr_array_header_t *array(const Pool &pool) const; 0085 0086 /** 0087 * Returns a vector of paths 0088 * 0089 * @return vector of paths 0090 */ 0091 const Paths &targets() const 0092 { 0093 return m_targets; 0094 } 0095 0096 /** 0097 * @return the number of targets 0098 */ 0099 Paths::size_type size() const 0100 { 0101 return m_targets.size(); 0102 } 0103 0104 /** 0105 * operator to return the vector 0106 * 0107 * @return vector with targets 0108 */ 0109 operator const Paths &() const 0110 { 0111 return m_targets; 0112 } 0113 0114 const Path &operator[](Paths::size_type which) const 0115 { 0116 return m_targets.at(which); 0117 } 0118 /** 0119 * returns one single target. 0120 * the first in the vector, if no parameter given if there are more 0121 * than one. if there is no target or parameter > then stored pathes returns 0122 * an empty path 0123 * \param which which item we want 0124 * @return single path 0125 */ 0126 const Path target(Paths::size_type which) const; 0127 0128 /** convenience functions 0129 */ 0130 static Targets fromStringList(const QStringList &paths); 0131 enum class UrlConversion { KeepUrl, PreferLocalPath }; 0132 0133 static Targets fromUrlList(const QList<QUrl> &urls, UrlConversion conversion); 0134 0135 private: 0136 Paths m_targets; 0137 }; 0138 } 0139 0140 #endif 0141 /* ----------------------------------------------------------------- 0142 * local variables: 0143 * eval: (load-file "../../rapidsvn-dev.el") 0144 * end: 0145 */