1// -*- C++ -*- 2// This file is part of the aMule Project. 3// 4// Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) 5// Copyright (c) 2007-2011 D��vai Tam��s ( gonosztopi@amule.org ) 6// 7// Any parts of this program derived from the xMule, lMule or eMule project, 8// or contributed by third-party developers are copyrighted by their 9// respective authors. 10// 11// This program is free software; you can redistribute it and/or modify 12// it under the terms of the GNU General Public License as published by 13// the Free Software Foundation; either version 2 of the License, or 14// (at your option) any later version. 15// 16// This program is distributed in the hope that it will be useful, 17// but WITHOUT ANY WARRANTY; without even the implied warranty of 18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19// GNU General Public License for more details. 20// 21// You should have received a copy of the GNU General Public License 22// along with this program; if not, write to the Free Software 23// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 24// 25 26#ifndef MAGNETURI_H 27#define MAGNETURI_H 28 29#ifdef USE_STD_STRING 30# include <string> 31# define STRING std::string 32#else 33# include <wx/string.h> 34# define STRING wxString 35#endif 36 37#include <list> // Needed for std::list 38#include <utility> // Needed for std::pair 39 40class CMagnetURI 41{ 42 public: 43 typedef std::list<STRING> Value_List; 44 45 CMagnetURI() {} 46 CMagnetURI(const STRING& uri); 47 48 void AddField(const STRING& name, const STRING& value) { m_fields.push_back(Field_Type(name, value)); } 49 Value_List GetField(const STRING& name) const; 50 void Clear() { m_fields.clear(); } 51 STRING GetLink() const; 52 operator STRING() const { return GetLink(); } 53 54 protected: 55 typedef std::pair<STRING, STRING> Field_Type; 56 typedef std::list<Field_Type> List_Type; 57 58 List_Type m_fields; 59}; 60 61class CMagnetED2KConverter : private CMagnetURI 62{ 63 public: 64 CMagnetED2KConverter(const STRING& uri) 65 : CMagnetURI(uri) 66 {} 67 68 bool CanConvertToED2K() const; 69 STRING GetED2KLink() const; 70 71 operator STRING() const { return GetED2KLink(); } 72}; 73 74#endif /* MAGNETURI_H */ 75