/*
 * ALMA - Atacama Large Millimeter Array
 * (c) European Southern Observatory, 2002
 * (c) Associated Universities Inc., 2002
 * Copyright by ESO (in the framework of the ALMA collaboration),
 * Copyright by AUI (in the framework of the ALMA collaboration),
 * All rights reserved.
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY, without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 * MA 02111-1307  USA
 *
 * Warning!
 *  -------------------------------------------------------------------- 
 * | This is generated code!  Do not modify this file.                  |
 * | If you do, all changes will be lost when the file is re-generated. |
 *  --------------------------------------------------------------------
 *
 * File WeatherRow.h
 */
 
#ifndef WeatherRow_CLASS
#define WeatherRow_CLASS

#include <vector>
#include <string>
#include <set>

#ifndef WITHOUT_ACS
#include <asdmIDLC.h>
#endif






	 
#include <alma/ASDM/Speed.h>
	

	 
#include <alma/ASDM/ArrayTimeInterval.h>
	

	 
#include <alma/ASDM/Temperature.h>
	

	 
#include <alma/ASDM/Angle.h>
	

	 
#include <alma/ASDM/Length.h>
	

	 
#include <alma/ASDM/Humidity.h>
	

	 
#include <alma/ASDM/Tag.h>
	

	 
#include <alma/ASDM/Pressure.h>
	




	

	

	

	

	

	

	

	

	

	

	

	

	

	

	



#include <alma/ASDM/ConversionException.h>
#include <alma/ASDM/NoSuchRow.h>
#include <alma/ASDM/IllegalAccessException.h>

#include <alma/ASDM/RowTransformer.h>
//#include <alma/ASDM/TableStreamReader.h>

/*\file Weather.h
    \brief Generated from model's revision "-1", branch ""
*/

namespace asdm {

//class asdm::WeatherTable;


// class asdm::StationRow;
class StationRow;
	

class WeatherRow;
typedef void (WeatherRow::*WeatherAttributeFromBin) (EndianIStream& eis);
typedef void (WeatherRow::*WeatherAttributeFromText) (const std::string& s);

/**
 * The WeatherRow class is a row of a WeatherTable.
 * 
 * Generated from model's revision "-1", branch ""
 *
 */
class WeatherRow {
friend class asdm::WeatherTable;
friend class asdm::RowTransformer<WeatherRow>;
//friend class asdm::TableStreamReader<WeatherTable, WeatherRow>;

public:

	virtual ~WeatherRow();

	/**
	 * Return the table to which this row belongs.
	 */
	WeatherTable &getTable() const;
	
	/**
	 * Has this row been added to its table ?
	 * @return true if and only if it has been added.
	 */
	bool isAdded() const;
		
	////////////////////////////////
	// Intrinsic Table Attributes //
	////////////////////////////////
	
	
	// ===> Attribute timeInterval
	
	
	

	
 	/**
 	 * Get timeInterval.
 	 * @return timeInterval as ArrayTimeInterval
 	 */
 	ArrayTimeInterval getTimeInterval() const;
	
 
 	
 	
 	/**
 	 * Set timeInterval with the specified ArrayTimeInterval.
 	 * @param timeInterval The ArrayTimeInterval value to which timeInterval is to be set.
 	 
 		
 			
 	 * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
 	 		
 	 */
 	void setTimeInterval (ArrayTimeInterval timeInterval);
  		
	
	
	


	
	// ===> Attribute pressure, which is optional
	
	
	
	/**
	 * The attribute pressure is optional. Return true if this attribute exists.
	 * @return true if and only if the pressure attribute exists. 
	 */
	bool isPressureExists() const;
	

	
 	/**
 	 * Get pressure, which is optional.
 	 * @return pressure as Pressure
 	 * @throws IllegalAccessException If pressure does not exist.
 	 */
 	Pressure getPressure() const;
	
 
 	
 	
 	/**
 	 * Set pressure with the specified Pressure.
 	 * @param pressure The Pressure value to which pressure is to be set.
 	 
 		
 	 */
 	void setPressure (Pressure pressure);
		
	
	
	
	/**
	 * Mark pressure, which is an optional field, as non-existent.
	 */
	void clearPressure ();
	


	
	// ===> Attribute relHumidity, which is optional
	
	
	
	/**
	 * The attribute relHumidity is optional. Return true if this attribute exists.
	 * @return true if and only if the relHumidity attribute exists. 
	 */
	bool isRelHumidityExists() const;
	

	
 	/**
 	 * Get relHumidity, which is optional.
 	 * @return relHumidity as Humidity
 	 * @throws IllegalAccessException If relHumidity does not exist.
 	 */
 	Humidity getRelHumidity() const;
	
 
 	
 	
 	/**
 	 * Set relHumidity with the specified Humidity.
 	 * @param relHumidity The Humidity value to which relHumidity is to be set.
 	 
 		
 	 */
 	void setRelHumidity (Humidity relHumidity);
		
	
	
	
	/**
	 * Mark relHumidity, which is an optional field, as non-existent.
	 */
	void clearRelHumidity ();
	


	
	// ===> Attribute temperature, which is optional
	
	
	
	/**
	 * The attribute temperature is optional. Return true if this attribute exists.
	 * @return true if and only if the temperature attribute exists. 
	 */
	bool isTemperatureExists() const;
	

	
 	/**
 	 * Get temperature, which is optional.
 	 * @return temperature as Temperature
 	 * @throws IllegalAccessException If temperature does not exist.
 	 */
 	Temperature getTemperature() const;
	
 
 	
 	
 	/**
 	 * Set temperature with the specified Temperature.
 	 * @param temperature The Temperature value to which temperature is to be set.
 	 
 		
 	 */
 	void setTemperature (Temperature temperature);
		
	
	
	
	/**
	 * Mark temperature, which is an optional field, as non-existent.
	 */
	void clearTemperature ();
	


	
	// ===> Attribute windDirection, which is optional
	
	
	
	/**
	 * The attribute windDirection is optional. Return true if this attribute exists.
	 * @return true if and only if the windDirection attribute exists. 
	 */
	bool isWindDirectionExists() const;
	

	
 	/**
 	 * Get windDirection, which is optional.
 	 * @return windDirection as Angle
 	 * @throws IllegalAccessException If windDirection does not exist.
 	 */
 	Angle getWindDirection() const;
	
 
 	
 	
 	/**
 	 * Set windDirection with the specified Angle.
 	 * @param windDirection The Angle value to which windDirection is to be set.
 	 
 		
 	 */
 	void setWindDirection (Angle windDirection);
		
	
	
	
	/**
	 * Mark windDirection, which is an optional field, as non-existent.
	 */
	void clearWindDirection ();
	


	
	// ===> Attribute windSpeed, which is optional
	
	
	
	/**
	 * The attribute windSpeed is optional. Return true if this attribute exists.
	 * @return true if and only if the windSpeed attribute exists. 
	 */
	bool isWindSpeedExists() const;
	

	
 	/**
 	 * Get windSpeed, which is optional.
 	 * @return windSpeed as Speed
 	 * @throws IllegalAccessException If windSpeed does not exist.
 	 */
 	Speed getWindSpeed() const;
	
 
 	
 	
 	/**
 	 * Set windSpeed with the specified Speed.
 	 * @param windSpeed The Speed value to which windSpeed is to be set.
 	 
 		
 	 */
 	void setWindSpeed (Speed windSpeed);
		
	
	
	
	/**
	 * Mark windSpeed, which is an optional field, as non-existent.
	 */
	void clearWindSpeed ();
	


	
	// ===> Attribute windMax, which is optional
	
	
	
	/**
	 * The attribute windMax is optional. Return true if this attribute exists.
	 * @return true if and only if the windMax attribute exists. 
	 */
	bool isWindMaxExists() const;
	

	
 	/**
 	 * Get windMax, which is optional.
 	 * @return windMax as Speed
 	 * @throws IllegalAccessException If windMax does not exist.
 	 */
 	Speed getWindMax() const;
	
 
 	
 	
 	/**
 	 * Set windMax with the specified Speed.
 	 * @param windMax The Speed value to which windMax is to be set.
 	 
 		
 	 */
 	void setWindMax (Speed windMax);
		
	
	
	
	/**
	 * Mark windMax, which is an optional field, as non-existent.
	 */
	void clearWindMax ();
	


	
	// ===> Attribute dewPoint, which is optional
	
	
	
	/**
	 * The attribute dewPoint is optional. Return true if this attribute exists.
	 * @return true if and only if the dewPoint attribute exists. 
	 */
	bool isDewPointExists() const;
	

	
 	/**
 	 * Get dewPoint, which is optional.
 	 * @return dewPoint as Temperature
 	 * @throws IllegalAccessException If dewPoint does not exist.
 	 */
 	Temperature getDewPoint() const;
	
 
 	
 	
 	/**
 	 * Set dewPoint with the specified Temperature.
 	 * @param dewPoint The Temperature value to which dewPoint is to be set.
 	 
 		
 	 */
 	void setDewPoint (Temperature dewPoint);
		
	
	
	
	/**
	 * Mark dewPoint, which is an optional field, as non-existent.
	 */
	void clearDewPoint ();
	


	
	// ===> Attribute numLayer, which is optional
	
	
	
	/**
	 * The attribute numLayer is optional. Return true if this attribute exists.
	 * @return true if and only if the numLayer attribute exists. 
	 */
	bool isNumLayerExists() const;
	

	
 	/**
 	 * Get numLayer, which is optional.
 	 * @return numLayer as int
 	 * @throws IllegalAccessException If numLayer does not exist.
 	 */
 	int getNumLayer() const;
	
 
 	
 	
 	/**
 	 * Set numLayer with the specified int.
 	 * @param numLayer The int value to which numLayer is to be set.
 	 
 		
 	 */
 	void setNumLayer (int numLayer);
		
	
	
	
	/**
	 * Mark numLayer, which is an optional field, as non-existent.
	 */
	void clearNumLayer ();
	


	
	// ===> Attribute layerHeight, which is optional
	
	
	
	/**
	 * The attribute layerHeight is optional. Return true if this attribute exists.
	 * @return true if and only if the layerHeight attribute exists. 
	 */
	bool isLayerHeightExists() const;
	

	
 	/**
 	 * Get layerHeight, which is optional.
 	 * @return layerHeight as std::vector<Length >
 	 * @throws IllegalAccessException If layerHeight does not exist.
 	 */
 	std::vector<Length > getLayerHeight() const;
	
 
 	
 	
 	/**
 	 * Set layerHeight with the specified std::vector<Length >.
 	 * @param layerHeight The std::vector<Length > value to which layerHeight is to be set.
 	 
 		
 	 */
 	void setLayerHeight (std::vector<Length > layerHeight);
		
	
	
	
	/**
	 * Mark layerHeight, which is an optional field, as non-existent.
	 */
	void clearLayerHeight ();
	


	
	// ===> Attribute temperatureProfile, which is optional
	
	
	
	/**
	 * The attribute temperatureProfile is optional. Return true if this attribute exists.
	 * @return true if and only if the temperatureProfile attribute exists. 
	 */
	bool isTemperatureProfileExists() const;
	

	
 	/**
 	 * Get temperatureProfile, which is optional.
 	 * @return temperatureProfile as std::vector<Temperature >
 	 * @throws IllegalAccessException If temperatureProfile does not exist.
 	 */
 	std::vector<Temperature > getTemperatureProfile() const;
	
 
 	
 	
 	/**
 	 * Set temperatureProfile with the specified std::vector<Temperature >.
 	 * @param temperatureProfile The std::vector<Temperature > value to which temperatureProfile is to be set.
 	 
 		
 	 */
 	void setTemperatureProfile (std::vector<Temperature > temperatureProfile);
		
	
	
	
	/**
	 * Mark temperatureProfile, which is an optional field, as non-existent.
	 */
	void clearTemperatureProfile ();
	


	
	// ===> Attribute cloudMonitor, which is optional
	
	
	
	/**
	 * The attribute cloudMonitor is optional. Return true if this attribute exists.
	 * @return true if and only if the cloudMonitor attribute exists. 
	 */
	bool isCloudMonitorExists() const;
	

	
 	/**
 	 * Get cloudMonitor, which is optional.
 	 * @return cloudMonitor as Temperature
 	 * @throws IllegalAccessException If cloudMonitor does not exist.
 	 */
 	Temperature getCloudMonitor() const;
	
 
 	
 	
 	/**
 	 * Set cloudMonitor with the specified Temperature.
 	 * @param cloudMonitor The Temperature value to which cloudMonitor is to be set.
 	 
 		
 	 */
 	void setCloudMonitor (Temperature cloudMonitor);
		
	
	
	
	/**
	 * Mark cloudMonitor, which is an optional field, as non-existent.
	 */
	void clearCloudMonitor ();
	


	
	// ===> Attribute numWVR, which is optional
	
	
	
	/**
	 * The attribute numWVR is optional. Return true if this attribute exists.
	 * @return true if and only if the numWVR attribute exists. 
	 */
	bool isNumWVRExists() const;
	

	
 	/**
 	 * Get numWVR, which is optional.
 	 * @return numWVR as int
 	 * @throws IllegalAccessException If numWVR does not exist.
 	 */
 	int getNumWVR() const;
	
 
 	
 	
 	/**
 	 * Set numWVR with the specified int.
 	 * @param numWVR The int value to which numWVR is to be set.
 	 
 		
 	 */
 	void setNumWVR (int numWVR);
		
	
	
	
	/**
	 * Mark numWVR, which is an optional field, as non-existent.
	 */
	void clearNumWVR ();
	


	
	// ===> Attribute wvrTemp, which is optional
	
	
	
	/**
	 * The attribute wvrTemp is optional. Return true if this attribute exists.
	 * @return true if and only if the wvrTemp attribute exists. 
	 */
	bool isWvrTempExists() const;
	

	
 	/**
 	 * Get wvrTemp, which is optional.
 	 * @return wvrTemp as std::vector<Temperature >
 	 * @throws IllegalAccessException If wvrTemp does not exist.
 	 */
 	std::vector<Temperature > getWvrTemp() const;
	
 
 	
 	
 	/**
 	 * Set wvrTemp with the specified std::vector<Temperature >.
 	 * @param wvrTemp The std::vector<Temperature > value to which wvrTemp is to be set.
 	 
 		
 	 */
 	void setWvrTemp (std::vector<Temperature > wvrTemp);
		
	
	
	
	/**
	 * Mark wvrTemp, which is an optional field, as non-existent.
	 */
	void clearWvrTemp ();
	


	
	// ===> Attribute water, which is optional
	
	
	
	/**
	 * The attribute water is optional. Return true if this attribute exists.
	 * @return true if and only if the water attribute exists. 
	 */
	bool isWaterExists() const;
	

	
 	/**
 	 * Get water, which is optional.
 	 * @return water as double
 	 * @throws IllegalAccessException If water does not exist.
 	 */
 	double getWater() const;
	
 
 	
 	
 	/**
 	 * Set water with the specified double.
 	 * @param water The double value to which water is to be set.
 	 
 		
 	 */
 	void setWater (double water);
		
	
	
	
	/**
	 * Mark water, which is an optional field, as non-existent.
	 */
	void clearWater ();
	


	////////////////////////////////
	// Extrinsic Table Attributes //
	////////////////////////////////
	
	
	// ===> Attribute stationId
	
	
	

	
 	/**
 	 * Get stationId.
 	 * @return stationId as Tag
 	 */
 	Tag getStationId() const;
	
 
 	
 	
 	/**
 	 * Set stationId with the specified Tag.
 	 * @param stationId The Tag value to which stationId is to be set.
 	 
 		
 			
 	 * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
 	 		
 	 */
 	void setStationId (Tag stationId);
  		
	
	
	


	///////////
	// Links //
	///////////
	
	

	
		
	/**
	 * stationId pointer to the row in the Station table having Station.stationId == stationId
	 * @return a StationRow*
	 * 
	 
	 */
	 StationRow* getStationUsingStationId();
	 

	

	
	
	
	/**
	 * Compare each mandatory attribute except the autoincrementable one of this WeatherRow with 
	 * the corresponding parameters and return true if there is a match and false otherwise.
	 	
	 * @param stationId
	    
	 * @param timeInterval
	    
	 */ 
	bool compareNoAutoInc(Tag stationId, ArrayTimeInterval timeInterval);
	
	

		 
	
	/**
	 * Return true if all required attributes of the value part are equal to their homologues
	 * in x and false otherwise.
	 *
	 * @param x a pointer on the WeatherRow whose required attributes of the value part 
	 * will be compared with those of this.
	 * @return a boolean.
	 */
	bool equalByRequiredValue(WeatherRow* x) ;
	
#ifndef WITHOUT_ACS
	/**
	 * Return this row in the form of an IDL struct.
	 * @return The values of this row as a WeatherRowIDL struct.
	 */
	asdmIDL::WeatherRowIDL *toIDL() const;
	
	/**
	 * Define the content of a WeatherRowIDL struct from the values
	 * found in this row.
	 *
	 * @param x a reference to the WeatherRowIDL struct to be set.
	 *
	 */
	 void toIDL(asdmIDL::WeatherRowIDL& x) const;
#endif
	
#ifndef WITHOUT_ACS
	/**
	 * Fill the values of this row from the IDL struct WeatherRowIDL.
	 * @param x The IDL struct containing the values used to fill this row.
	 * @throws ConversionException
	 */
	void setFromIDL (asdmIDL::WeatherRowIDL x) ;
#endif
	
	/**
	 * Return this row in the form of an XML string.
	 * @return The values of this row as an XML string.
	 */
	std::string toXML() const;

	/**
	 * Fill the values of this row from an XML string 
	 * that was produced by the toXML() method.
	 * @param rowDoc the XML string being used to set the values of this row.
	 * @throws ConversionException
	 */
	void setFromXML (std::string rowDoc) ;

	/// @cond DISPLAY_PRIVATE	
	////////////////////////////////////////////////////////////
	// binary-deserialization material from an EndianIStream  //
	////////////////////////////////////////////////////////////

	std::map<std::string, WeatherAttributeFromBin> fromBinMethods;
void stationIdFromBin( EndianIStream& eis);
void timeIntervalFromBin( EndianIStream& eis);

void pressureFromBin( EndianIStream& eis);
void relHumidityFromBin( EndianIStream& eis);
void temperatureFromBin( EndianIStream& eis);
void windDirectionFromBin( EndianIStream& eis);
void windSpeedFromBin( EndianIStream& eis);
void windMaxFromBin( EndianIStream& eis);
void dewPointFromBin( EndianIStream& eis);
void numLayerFromBin( EndianIStream& eis);
void layerHeightFromBin( EndianIStream& eis);
void temperatureProfileFromBin( EndianIStream& eis);
void cloudMonitorFromBin( EndianIStream& eis);
void numWVRFromBin( EndianIStream& eis);
void wvrTempFromBin( EndianIStream& eis);
void waterFromBin( EndianIStream& eis);


	 /**
	  * Deserialize a stream of bytes read from an EndianIStream to build a PointingRow.
	  * @param eiss the EndianIStream to be read.
	  * @param table the WeatherTable to which the row built by deserialization will be parented.
	  * @param attributesSeq a vector containing the names of the attributes . The elements order defines the order 
	  * in which the attributes are written in the binary serialization.
	  */
	 static WeatherRow* fromBin(EndianIStream& eis, WeatherTable& table, const std::vector<std::string>& attributesSeq);	 
 
 	 /**
 	  * Parses a string t and assign the result of the parsing to the attribute of name attributeName.
 	  *
 	  * @param attributeName the name of the attribute whose value is going to be defined.
 	  * @param t the string to be parsed into a value given to the attribute of name attributeName.
 	  */
 	 void fromText(const std::string& attributeName, const std::string&  t);
     /// @endcond			

private:
	/**
	 * The table to which this row belongs.
	 */
	WeatherTable &table;
	/**
	 * Whether this row has been added to the table or not.
	 */
	bool hasBeenAdded;

	// This method is used by the Table class when this row is added to the table.
	void isAdded(bool added);


	/**
	 * Create a WeatherRow.
	 * <p>
	 * This constructor is private because only the
	 * table can create rows.  All rows know the table
	 * to which they belong.
	 * @param table The table to which this row belongs.
	 */ 
	WeatherRow (WeatherTable &table);

	/**
	 * Create a WeatherRow using a copy constructor mechanism.
	 * <p>
	 * Given a WeatherRow row and a WeatherTable table, the method creates a new
	 * WeatherRow owned by table. Each attribute of the created row is a copy (deep)
	 * of the corresponding attribute of row. The method does not add the created
	 * row to its table, its simply parents it to table, a call to the add method
	 * has to be done in order to get the row added (very likely after having modified
	 * some of its attributes).
	 * If row is null then the method returns a row with default values for its attributes. 
	 *
	 * This constructor is private because only the
	 * table can create rows.  All rows know the table
	 * to which they belong.
	 * @param table The table to which this row belongs.
	 * @param row  The row which is to be copied.
	 */
	 WeatherRow (WeatherTable &table, WeatherRow *row);
	 	
	////////////////////////////////
	// Intrinsic Table Attributes //
	////////////////////////////////
	
	
	// ===> Attribute timeInterval
	
	

	ArrayTimeInterval timeInterval;

	
	
 	

	
	// ===> Attribute pressure, which is optional
	
	
	bool pressureExists;
	

	Pressure pressure;

	
	
 	

	
	// ===> Attribute relHumidity, which is optional
	
	
	bool relHumidityExists;
	

	Humidity relHumidity;

	
	
 	

	
	// ===> Attribute temperature, which is optional
	
	
	bool temperatureExists;
	

	Temperature temperature;

	
	
 	

	
	// ===> Attribute windDirection, which is optional
	
	
	bool windDirectionExists;
	

	Angle windDirection;

	
	
 	

	
	// ===> Attribute windSpeed, which is optional
	
	
	bool windSpeedExists;
	

	Speed windSpeed;

	
	
 	

	
	// ===> Attribute windMax, which is optional
	
	
	bool windMaxExists;
	

	Speed windMax;

	
	
 	

	
	// ===> Attribute dewPoint, which is optional
	
	
	bool dewPointExists;
	

	Temperature dewPoint;

	
	
 	

	
	// ===> Attribute numLayer, which is optional
	
	
	bool numLayerExists;
	

	int numLayer;

	
	
 	

	
	// ===> Attribute layerHeight, which is optional
	
	
	bool layerHeightExists;
	

	std::vector<Length > layerHeight;

	
	
 	

	
	// ===> Attribute temperatureProfile, which is optional
	
	
	bool temperatureProfileExists;
	

	std::vector<Temperature > temperatureProfile;

	
	
 	

	
	// ===> Attribute cloudMonitor, which is optional
	
	
	bool cloudMonitorExists;
	

	Temperature cloudMonitor;

	
	
 	

	
	// ===> Attribute numWVR, which is optional
	
	
	bool numWVRExists;
	

	int numWVR;

	
	
 	

	
	// ===> Attribute wvrTemp, which is optional
	
	
	bool wvrTempExists;
	

	std::vector<Temperature > wvrTemp;

	
	
 	

	
	// ===> Attribute water, which is optional
	
	
	bool waterExists;
	

	double water;

	
	
 	

	////////////////////////////////
	// Extrinsic Table Attributes //
	////////////////////////////////
	
	
	// ===> Attribute stationId
	
	

	Tag stationId;

	
	
 	

	///////////
	// Links //
	///////////
	
	
		

	 

	

	
/*
	////////////////////////////////////////////////////////////
	// binary-deserialization material from an EndianIStream  //
	////////////////////////////////////////////////////////////
	std::map<std::string, WeatherAttributeFromBin> fromBinMethods;
void stationIdFromBin( EndianIStream& eis);
void timeIntervalFromBin( EndianIStream& eis);

void pressureFromBin( EndianIStream& eis);
void relHumidityFromBin( EndianIStream& eis);
void temperatureFromBin( EndianIStream& eis);
void windDirectionFromBin( EndianIStream& eis);
void windSpeedFromBin( EndianIStream& eis);
void windMaxFromBin( EndianIStream& eis);
void dewPointFromBin( EndianIStream& eis);
void numLayerFromBin( EndianIStream& eis);
void layerHeightFromBin( EndianIStream& eis);
void temperatureProfileFromBin( EndianIStream& eis);
void cloudMonitorFromBin( EndianIStream& eis);
void numWVRFromBin( EndianIStream& eis);
void wvrTempFromBin( EndianIStream& eis);
void waterFromBin( EndianIStream& eis);

*/
	
	///////////////////////////////////
	// text-deserialization material //
	///////////////////////////////////
	std::map<std::string, WeatherAttributeFromText> fromTextMethods;
	
void stationIdFromText (const std::string & s);
	
	
void timeIntervalFromText (const std::string & s);
	

	
void pressureFromText (const std::string & s);
	
	
void relHumidityFromText (const std::string & s);
	
	
void temperatureFromText (const std::string & s);
	
	
void windDirectionFromText (const std::string & s);
	
	
void windSpeedFromText (const std::string & s);
	
	
void windMaxFromText (const std::string & s);
	
	
void dewPointFromText (const std::string & s);
	
	
void numLayerFromText (const std::string & s);
	
	
void layerHeightFromText (const std::string & s);
	
	
void temperatureProfileFromText (const std::string & s);
	
	
void cloudMonitorFromText (const std::string & s);
	
	
void numWVRFromText (const std::string & s);
	
	
void wvrTempFromText (const std::string & s);
	
	
void waterFromText (const std::string & s);
	
	
	
	/**
	 * Serialize this into a stream of bytes written to an EndianOSStream.
	 * @param eoss the EndianOSStream to be written to
	 */
	 void toBin(EndianOSStream& eoss);
	 	 
	 /**
	  * Deserialize a stream of bytes read from an EndianIStream to build a PointingRow.
	  * @param eiss the EndianIStream to be read.
	  * @param table the WeatherTable to which the row built by deserialization will be parented.
	  * @param attributesSeq a vector containing the names of the attributes . The elements order defines the order 
	  * in which the attributes are written in the binary serialization.

	 static WeatherRow* fromBin(EndianIStream& eis, WeatherTable& table, const std::vector<std::string>& attributesSeq);	 
		*/
};

} // End namespace asdm

#endif /* Weather_CLASS */