text: /**********************************************************************
   * LeechCraft - modular cross-platform feature rich internet client.
   * Copyright (C) 2006-2014  Georg Rudoy
   *
   * Boost Software License - Version 1.0 - August 17th, 2003
   *
   * Permission is hereby granted, free of charge, to any person or organization
   * obtaining a copy of the software and accompanying documentation covered by
   * this license (the "Software") to use, reproduce, display, distribute,
   * execute, and transmit the Software, and to prepare derivative works of the
   * Software, and to permit third-parties to whom the Software is furnished to
   * do so, all subject to the following:
   *
   * The copyright notices in the Software and this entire statement, including
   * the above license grant, this restriction and the following disclaimer,
   * must be included in all copies of the Software, in whole or in part, and
   * all derivative works of the Software, unless such copies or derivative
   * works are solely in the form of machine-executable object code generated by
   * a source language processor.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
   * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
   * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
   * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   * DEALINGS IN THE SOFTWARE.
   **********************************************************************/
  
  #include "pageformsdata.h"
  #include <QDataStream>
  #include <QtDebug>
  #include <util/util.h>
  
  namespace LeechCraft
  {
  namespace Poshuku
  {
  	QVariantMap ElementData::ToVariantMap () const
  	{
  		return Util::MakeMap<QString, QVariant> ({
  				{ "PageURL", PageURL_ },
  				{ "FormID", FormID_ },
  				{ "Name", Name_ },
  				{ "Type", Type_ },
  				{ "Value", Value_ }
  			});
  	}
  
  	bool operator== (const ElementData& left, const ElementData& right)
  	{
  		return left.PageURL_ == right.PageURL_ &&
  				left.FormID_ == right.FormID_ &&
  				left.Name_ == right.Name_ &&
  				left.Type_ == right.Type_ &&
  				left.Value_ == right.Value_;
  	}
  
  	bool operator< (const ElementData& left, const ElementData& right)
  	{
  		if (left.PageURL_ != right.PageURL_)
  			return left.PageURL_ < right.PageURL_;
  
  		if (left.FormID_ != right.FormID_)
  			return left.FormID_ < right.FormID_;
  
  		if (left.Name_ != right.Name_)
  			return left.Name_ < right.Name_;
  
  		if (left.Type_ != right.Type_)
  			return left.Type_ < right.Type_;
  
  		return left.Value_ < right.Value_;
  	}
  
  	QDataStream& operator<< (QDataStream& out, const ElementData& ed)
  	{
  		out << static_cast<quint8> (1)
  			<< ed.PageURL_
  			<< ed.FormID_
  			<< ed.Name_
  			<< ed.Type_
  			<< ed.Value_;
  		return out;
  	}
  
  	QDataStream& operator>> (QDataStream& in, ElementData& ed)
  	{
  		quint8 version = 0;
  		in >> version;
  		if (version == 1)
  			in >> ed.PageURL_
  				>> ed.FormID_
  				>> ed.Name_
  				>> ed.Type_
  				>> ed.Value_;
  		else
  			qWarning () << Q_FUNC_INFO
  				<< "unable to deserialize ElementType of version"
  				<< version;
  
  		return in;
  	}
  
  	QDebug& operator<< (QDebug& dbg, const ElementData& ed)
  	{
  		dbg << "Element: {"
  			<< ed.PageURL_
  			<< ed.FormID_
  			<< ed.Name_
  			<< ed.Type_
  			<< ed.Value_
  			<< "}";
  		return dbg;
  	}
  }
  }
  