// -*- coding: utf-8 -*-
#ifndef __DIRECCION_H__
#define __DIRECCION_H__

#ifdef WIN32
#ifdef DIRECCION_EXPORTS
#define DIRECCION_API __declspec(dllexport)
#else
#define DIRECCION_API __declspec(dllimport)
#endif
#else
#define DIRECCION_API
#endif

#include <QString>

/** \brief Abstracci&oacute;n para una direcci&oacute;n postal.
 *
 * La clase Direcci&oacuten sirve facilitar el manejo de las direcciones postales.
 * Las propiedades de esta clase son: calle, colonia, ciudad, estado, c&oacutedigo
 * postal y país. */
class DIRECCION_API Direccion {
public:
	/** Constructor por defecto */
	Direccion();
	Direccion(QString const & calle, QString const & col,
	          QString const & ciudad, QString const & estado,
	          QString const & cp, QString const & pais);
	/** Destructor por defecto */
	~Direccion();

	/** Obtiene el valor de calle
	 * @return El valor de la variable m_calle */
	QString const & calle() const;
	/** Obtiene el valor de colonia
	 * @return El valor de la variable colonia */
	QString const & colonia() const;
	/** Obtiene el valor de ciudad
	 * @return El valor de la variable ciudad */
	QString const & ciudad() const;
	/** Obtiene el valor de estado
	 * @return El valor de la variable m_estado */
	QString const & estado() const;
	/** Obtiene el valor de c&oacutedigo postal
	 * @return El valor de la variable m_cp*/
	QString const & cp() const;
	/** Obtiene el valor de país
	 * @return El valor de la variable m_pais*/
	QString const & pais() const;

	/** Define el nombre de la calle y número de casa
	 * @param calle Valor para la varible m_calle */
	void calle(QString const & calle);
	/** Define el nombre de la colonia
	 * @param col Valor para la varible m_colonia */
	void colonia(QString const & col);
	/** Define el nombre de la ciudad
	 * @param cd Valor para la varible m_ciudad */
	void ciudad(QString const & cd);
	/** Define el nombre del estado
	 * @param edo Valor para la varible m_estado */
	void estado(QString const & edo);
	/** Define el valor del c&oacutedigo postal
	 * @param cp Valor para la varible m_cp */
	void cp(QString const & cp);
	/** Define el nombre del país
	 * @param pais Valor para la varible m_pais */
	void pais(QString const & pais);

private:
	/// Alamancena la calle
	QString m_calle;
	/// Almacena la colonia
	QString m_colonia;
	/// Almacena la ciudad
	QString m_ciudad;
	/// Almacena el estado
	QString m_estado;
	/// Alamacena el c&oacutedigo postal
	QString m_cp;
	/// Alamcena el país
	QString m_pais;

};

#endif
