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 40 class CMagnetURI 41 { 42 public: 43 typedef std::list<STRING> Value_List; 44 CMagnetURI()45 CMagnetURI() {} 46 CMagnetURI(const STRING& uri); 47 AddField(const STRING & name,const STRING & value)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; Clear()50 void Clear() { m_fields.clear(); } 51 STRING GetLink() const; STRING()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 61 class CMagnetED2KConverter : private CMagnetURI 62 { 63 public: CMagnetED2KConverter(const STRING & uri)64 CMagnetED2KConverter(const STRING& uri) 65 : CMagnetURI(uri) 66 {} 67 68 bool CanConvertToED2K() const; 69 STRING GetED2KLink() const; 70 STRING()71 operator STRING() const { return GetED2KLink(); } 72 }; 73 74 #endif /* MAGNETURI_H */ 75