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 #include "targets.h" 0033 0034 // subversion api 0035 #include <svn_types.h> 0036 0037 // apr api 0038 #include <apr_pools.h> 0039 #include <apr_strings.h> 0040 0041 // svncpp 0042 #include "path.h" 0043 #include "pool.h" 0044 #include "svnqt_defines.h" 0045 0046 #include <QStringList> 0047 #include <QUrl> 0048 0049 namespace svn 0050 { 0051 Targets::Targets(const svn::Paths &targets) 0052 : m_targets(targets) 0053 { 0054 } 0055 0056 Targets::Targets(const QString &target) 0057 { 0058 if (!target.isEmpty()) { 0059 m_targets.push_back(target); 0060 } 0061 } 0062 0063 Targets::Targets(const Path &target) 0064 { 0065 if (!target.cstr().isEmpty()) { 0066 m_targets.push_back(target); 0067 } 0068 } 0069 0070 apr_array_header_t *Targets::array(const Pool &pool) const 0071 { 0072 apr_pool_t *apr_pool = pool.pool(); 0073 apr_array_header_t *apr_targets = apr_array_make(apr_pool, m_targets.size(), sizeof(const char *)); 0074 0075 for (const svn::Path &tgt : m_targets) { 0076 const QByteArray s = tgt.path().toUtf8(); 0077 char *t2 = apr_pstrndup(apr_pool, s.data(), s.size()); 0078 (*((const char **)apr_array_push(apr_targets))) = t2; 0079 } 0080 0081 return apr_targets; 0082 } 0083 0084 const Path Targets::target(Paths::size_type which) const 0085 { 0086 if (m_targets.size() > which) { 0087 return m_targets[which]; 0088 } else { 0089 return Path(); 0090 } 0091 } 0092 0093 svn::Targets Targets::fromStringList(const QStringList &paths) 0094 { 0095 svn::Paths ret; 0096 ret.reserve(paths.size()); 0097 for (const QString &path : paths) 0098 ret.push_back(svn::Path(path)); 0099 return svn::Targets(ret); 0100 } 0101 0102 svn::Targets Targets::fromUrlList(const QList<QUrl> &urls, UrlConversion conversion) 0103 { 0104 svn::Paths ret; 0105 ret.reserve(urls.size()); 0106 const bool preferLocalFile = conversion == UrlConversion::PreferLocalPath; 0107 for (const QUrl &url : urls) 0108 ret.push_back(svn::Path((preferLocalFile && url.isLocalFile()) ? url.toLocalFile() : url.url())); 0109 return svn::Targets(ret); 0110 } 0111 0112 }