[SCM] tango branch, master, updated. debian/7.2.6+dfsg-11-3-g195a8b7

Picca Frédéric-Emma?==?UTF-8?Q?nuel picca at debian.org
Fri Oct 21 21:05:00 UTC 2011


The following commit has been merged in the master branch:
commit 195a8b75a33b9a136de168e13d3b332e79e60870
Author: Picca Frédéric-Emmanuel <picca at debian.org>
Date:   Fri Oct 21 22:32:55 2011 +0200

    add the upstream fix bug3339975 patch

diff --git a/debian/changelog b/debian/changelog
index e618242..9810099 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,10 @@
 tango (7.2.6+dfsg-12) unstable; urgency=low
 
   * remove symbols files (Closes: #635867)
-  * hardening flags activated as we are providing daemons.
+  * debian/rules
+    - hardening flags activated as we are providing daemons.
+  * debian/patches
+    - 0009-upstream-fix-bug3339975.patch
 
  -- Picca Frédéric-Emmanuel <picca at debian.org>  Fri, 21 Oct 2011 20:44:03 +0200
 
diff --git a/debian/patches/0001-debian-fix_database_scripts.patch b/debian/patches/0001-debian-fix_database_scripts.patch
index 5b72a54..708f897 100644
--- a/debian/patches/0001-debian-fix_database_scripts.patch
+++ b/debian/patches/0001-debian-fix_database_scripts.patch
@@ -1,4 +1,5 @@
-From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca at synchrotron-soleil.fr>
+From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?=
+ <picca at synchrotron-soleil.fr>
 Date: Tue, 22 Mar 2011 15:25:38 +0100
 Subject: debian/fix_database_scripts
 MIME-Version: 1.0
diff --git a/debian/patches/0002-debian-my.cnf.in.patch b/debian/patches/0002-debian-my.cnf.in.patch
index ee19861..71f682c 100644
--- a/debian/patches/0002-debian-my.cnf.in.patch
+++ b/debian/patches/0002-debian-my.cnf.in.patch
@@ -1,4 +1,5 @@
-From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca at synchrotron-soleil.fr>
+From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?=
+ <picca at synchrotron-soleil.fr>
 Date: Tue, 22 Mar 2011 15:25:38 +0100
 Subject: debian/my.cnf.in
 MIME-Version: 1.0
diff --git a/debian/patches/0003-debian-notify_daemon.patch b/debian/patches/0003-debian-notify_daemon.patch
index 5cc12bc..1d98648 100644
--- a/debian/patches/0003-debian-notify_daemon.patch
+++ b/debian/patches/0003-debian-notify_daemon.patch
@@ -1,4 +1,5 @@
-From: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
+From: Debian Science Maintainers
+ <debian-science-maintainers at lists.alioth.debian.org>
 Date: Tue, 22 Mar 2011 15:25:38 +0100
 Subject: debian/notify_daemon
 
diff --git a/debian/patches/0004-upstream-fix-bug3285674.patch b/debian/patches/0004-upstream-fix-bug3285674.patch
index 1e261cd..dea101c 100644
--- a/debian/patches/0004-upstream-fix-bug3285674.patch
+++ b/debian/patches/0004-upstream-fix-bug3285674.patch
@@ -1,4 +1,5 @@
-From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca at synchrotron-soleil.fr>
+From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?=
+ <picca at synchrotron-soleil.fr>
 Date: Fri, 13 May 2011 19:05:00 +0200
 Subject: upstream-fix-bug3285674
 
diff --git a/debian/patches/0005-upstream-fix-bug3213730.patch b/debian/patches/0005-upstream-fix-bug3213730.patch
index 7e3f041..d22262d 100644
--- a/debian/patches/0005-upstream-fix-bug3213730.patch
+++ b/debian/patches/0005-upstream-fix-bug3213730.patch
@@ -1,4 +1,5 @@
-From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca at synchrotron-soleil.fr>
+From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?=
+ <picca at synchrotron-soleil.fr>
 Date: Fri, 13 May 2011 12:28:01 +0200
 Subject: upstream-fix-bug3213730
 
diff --git a/debian/patches/0006-feature-forwarded-upstream-pkg-config-small-fixes.patch b/debian/patches/0006-feature-forwarded-upstream-pkg-config-small-fixes.patch
index e5739de..4ecdf64 100644
--- a/debian/patches/0006-feature-forwarded-upstream-pkg-config-small-fixes.patch
+++ b/debian/patches/0006-feature-forwarded-upstream-pkg-config-small-fixes.patch
@@ -1,4 +1,5 @@
-From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca at synchrotron-soleil.fr>
+From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?=
+ <picca at synchrotron-soleil.fr>
 Date: Fri, 13 May 2011 12:34:13 +0200
 Subject: feature-forwarded-upstream-pkg-config-small-fixes
 
diff --git a/debian/patches/0009-upstream-fix-bug3339975.patch b/debian/patches/0009-upstream-fix-bug3339975.patch
new file mode 100644
index 0000000..60078b3
--- /dev/null
+++ b/debian/patches/0009-upstream-fix-bug3339975.patch
@@ -0,0 +1,4214 @@
+From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca at debian.org>
+Date: Fri, 21 Oct 2011 22:27:42 +0200
+Subject: upstream-fix-bug3339975
+
+---
+ lib/cpp/server/deviceclass.cpp |  348 ++++++++------
+ lib/cpp/server/w_attribute.cpp | 1022 ++++++++++++++++++++++++----------------
+ 2 files changed, 808 insertions(+), 562 deletions(-)
+
+diff --git a/lib/cpp/server/deviceclass.cpp b/lib/cpp/server/deviceclass.cpp
+index 9553d49..7ae5e24 100644
+--- a/lib/cpp/server/deviceclass.cpp
++++ b/lib/cpp/server/deviceclass.cpp
+@@ -1,4 +1,4 @@
+-static const char *RcsId = "$Id: deviceclass.cpp 15556 2011-02-11 08:25:58Z taurel $\n$Name$";
++static const char *RcsId = "$Id$\n$Name$";
+ 
+ //+============================================================================
+ //
+@@ -24,16 +24,16 @@ static const char *RcsId = "$Id: deviceclass.cpp 15556 2011-02-11 08:25:58Z taur
+ // it under the terms of the GNU Lesser General Public License as published by
+ // the Free Software Foundation, either version 3 of the License, or
+ // (at your option) any later version.
+-// 
++//
+ // Tango 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 Tango.  If not, see <http://www.gnu.org/licenses/>.
+ //
+-// $Revision: 15556 $
++// $Revision$
+ //
+ // $Log$
+ // Revision 1.39  2011/01/10 14:39:27  taurel
+@@ -217,8 +217,8 @@ static void lower_cmd_name(string &cmd)
+ //+----------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::DeviceClass(string &s)
+-// 
+-// description :	DeviceClass constructor. Protected method which will 
++//
++// description :	DeviceClass constructor. Protected method which will
+ //			be called automatically by the compiler.
+ //
+ //-----------------------------------------------------------------------------
+@@ -231,15 +231,15 @@ DeviceClass::DeviceClass(string &s):name(s)
+ //
+ 
+ 	ext = new DeviceClassExt;
+-	
++
+ //
+ // Create the associated DbClass object
+ //
+ 
+ 	db_class = new DbClass(name,Tango::Util::instance()->get_database());
+-		
++
+ //
+-// initialise command_list with State, Status and Init 
++// initialise command_list with State, Status and Init
+ //
+ 
+ 	try
+@@ -264,9 +264,9 @@ DeviceClass::DeviceClass(string &s):name(s)
+ //
+ // Retrieve basic class resource
+ //
+-	
++
+ 	get_class_system_resource();
+-	
++
+ //
+ // Create the multi class attribute object
+ //
+@@ -278,13 +278,13 @@ DeviceClass::DeviceClass(string &s):name(s)
+ //
+ 
+ 	type = DescNotSet;
+-			
++
+ }
+ 
+ //+----------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::get_class_system_resource(string &s)
+-// 
++//
+ // description :	Method to retrieve some basic class resource(s)
+ //			The resource to be retrived are :
+ //				- The class doc URL
+@@ -303,7 +303,7 @@ void DeviceClass::get_class_system_resource()
+ 	{
+ 		Database *db = tg->get_database();
+ 		DbData db_data;
+-		
++
+ 		db_data.push_back(DbDatum("doc_url"));
+ 		db_data.push_back(DbDatum("cvs_tag"));
+ 		db_data.push_back(DbDatum("cvs_location"));
+@@ -322,22 +322,22 @@ void DeviceClass::get_class_system_resource()
+ 					o.str(),
+ 					(const char *)"DeviceClass::get_class_system_resource");
+ 		}
+-		
++
+ 		if (db_data[1].is_empty() == false)
+ 			db_data[1] >> ext->cvs_tag;
+ 		if (db_data[2].is_empty() == false)
+ 			db_data[2] >> ext->cvs_location;
+-		
++
+ //
+ // Init allowed commands vector (in lowercase letters)
+ //
+-			
++
+ 		if (db_data[3].is_empty() == false)
+ 		{
+ 			db_data[3] >> allowed_cmds;
+ 			for_each(allowed_cmds.begin(),allowed_cmds.end(),lower_cmd_name);
+ 		}
+-					
++
+ 		if (db_data[0].is_empty() == true)
+ 		{
+ 			cout4 << "doc_url property for class " << name << " is not defined in database" << endl;
+@@ -346,15 +346,15 @@ void DeviceClass::get_class_system_resource()
+ 				db->get_class_property("Default",db_data,tg->get_db_cache());
+ 			}
+ 			catch (Tango::DevFailed &)
+-			{			
++			{
+ 				TangoSys_OMemStream o;
+ 				o << "Database error while trying to retrieve properties for class " << name.c_str() << ends;
+-					
++
+ 				Except::throw_exception((const char *)"API_DatabaseAccess",
+ 							o.str(),
+ 							(const char *)"DeviceClass::get_class_system_resource");
+-			}			
+-			
++			}
++
+ 			if (db_data[0].is_empty() == true)
+ 			{
+ 				doc_url = DefaultDocUrl;
+@@ -364,22 +364,22 @@ void DeviceClass::get_class_system_resource()
+ 		}
+ 		else
+ 			db_data[0] >> doc_url;
+-		
++
+ 	}
+ 	else
+ 	{
+ 		doc_url = DefaultDocUrl;
+-	}	
++	}
+ }
+ 
+ //+----------------------------------------------------------------------------
+ //
+ // method : 		DeviceClass::set_memorized_values()
+-// 
++//
+ // description : 	Write the memorized attribute with the value
+ //			stored in database
+ //
+-// in :			all : Flag set to true if memorized values must be 
++// in :			all : Flag set to true if memorized values must be
+ //			      applied to all class devices
+ //			idx : Index of the device in the device_list vector
+ //			      of the device for which memorized values must
+@@ -390,15 +390,15 @@ void DeviceClass::get_class_system_resource()
+ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ {
+ 	cout4 << "Entering DeviceClass::set_memorized_values() method" << endl;
+-	
++
+ 	short sh;
+ 	Tango::DevVarShortArray sh_seq(1);
+ 	sh_seq.length(1);
+-						
++
+ 	Tango::DevLong lg;
+ 	Tango::DevVarLongArray lg_seq(1);
+ 	lg_seq.length(1);
+-		
++
+ 	double db;
+ 	Tango::DevVarDoubleArray db_seq(1);
+ 	db_seq.length(1);
+@@ -410,11 +410,11 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 	float fl;
+ 	Tango::DevVarFloatArray fl_seq(1);
+ 	fl_seq.length(1);
+-						
++
+ 	Tango::DevBoolean boo;
+ 	Tango::DevVarBooleanArray boo_seq(1);
+ 	boo_seq.length(1);
+-		
++
+ 	Tango::DevUShort ush;
+ 	Tango::DevVarUShortArray ush_seq(1);
+ 	ush_seq.length(1);
+@@ -422,7 +422,19 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 	Tango::DevUChar uch;
+ 	Tango::DevVarCharArray uch_seq(1);
+ 	uch_seq.length(1);
+-		
++
++	Tango::DevULong ulg;
++	Tango::DevVarULongArray ulg_seq(1);
++	ulg_seq.length(1);
++
++	Tango::DevLong64 lg64;
++	Tango::DevVarLong64Array lg64_seq(1);
++	lg64_seq.length(1);
++
++	Tango::DevULong64 ulg64;
++	Tango::DevVarULong64Array ulg64_seq(1);
++	ulg64_seq.length(1);
++
+ //
+ // Set loop start and stop limits
+ //
+@@ -438,7 +450,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 		start = idx;
+ 		stop = idx + 1;
+ 	}
+-								
++
+ 	for (unsigned long i = start;i < stop;i++)
+ 	{
+ 
+@@ -449,29 +461,29 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 
+ 		if (device_list[i]->get_dev_idl_version() < 3)
+ 			continue;
+-				
++
+ //
+ // Get list of device writable attributes
+ //
+ 
+ 		AttributeValueList att_val(10);
+ 		vector<long> &att_list = device_list[i]->get_device_attr()->get_w_attr_list();
+-		
++
+ 		long nb_wr = 0;
+ 		for (unsigned long j = 0;j < att_list.size();j++)
+ 		{
+-						
++
+ 			WAttribute &att = device_list[i]->get_device_attr()->get_w_attr_by_ind(att_list[j]);
+-			
++
+ 			if (att.is_memorized() == true)
+ 			{
+ 
+ 				string &mem_value = att.get_mem_value();
+-				if ((mem_value != MemNotUsed) || (from_init == true))
++                if (mem_value != MemNotUsed)
+ 				{
+ 					nb_wr++;
+ 					att_val.length(nb_wr);
+-							
++
+ //
+ // In order to not send
+ // a new time the already memorized value into db, mark it as not memorized
+@@ -479,7 +491,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ //
+ 
+ 					att.set_memorized(false);
+-					
++
+ //
+ // The memorized value gotten from db is a string, we need to convert this string
+ // to its real type before inserting it into an Any
+@@ -488,7 +500,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 					TangoSys_MemStream str;
+ 					if (from_init == false)
+ 						str << mem_value << ends;
+-					
++
+ 					try
+ 					{
+ 						switch (att.get_data_type())
+@@ -502,7 +514,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							}
+ 							else
+ 								att.get_write_value(sh);
+-							
++
+ 							sh_seq[0] = sh;
+ 							att_val[nb_wr - 1].value <<= sh_seq;
+ 							break;
+@@ -516,7 +528,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							}
+ 							else
+ 								att.get_write_value(lg);
+-								
++
+ 							lg_seq[0] = lg;
+ 							att_val[nb_wr - 1].value <<= lg_seq;
+ 							break;
+@@ -530,7 +542,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							}
+ 							else
+ 								att.get_write_value(db);
+-							
++
+ 							db_seq[0] = db;
+ 							att_val[nb_wr - 1].value <<= db_seq;
+ 							break;
+@@ -539,7 +551,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							if (from_init == false)
+ 							{
+ 								att.set_write_value(mem_value);
+-							
++
+ 								str_seq[0] = CORBA::string_dup(mem_value.c_str());
+ 							}
+ 							else
+@@ -559,7 +571,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							}
+ 							else
+ 								att.get_write_value(fl);
+-								
++
+ 							fl_seq[0] = fl;
+ 							att_val[nb_wr - 1].value <<= fl_seq;
+ 							break;
+@@ -583,7 +595,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							}
+ 							else
+ 								att.get_write_value(boo);
+-							
++
+ 							boo_seq[0] = boo;
+ 							att_val[nb_wr - 1].value <<= boo_seq;
+ 							break;
+@@ -597,7 +609,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							}
+ 							else
+ 								att.get_write_value(ush);
+-								
++
+ 							ush_seq[0] = ush;
+ 							att_val[nb_wr - 1].value <<= ush_seq;
+ 							break;
+@@ -611,61 +623,103 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 							}
+ 							else
+ 								att.get_write_value(uch);
+-								
++
+ 							uch_seq[0] = uch;
+ 							att_val[nb_wr - 1].value <<= uch_seq;
+ 							break;
++
++						case Tango::DEV_ULONG:
++							if (from_init == false)
++							{
++								if (!(str >> ulg))
++									throw_mem_value(device_list[i],att);
++								att.set_write_value(ulg);
++							}
++							else
++								att.get_write_value(ulg);
++
++							ulg_seq[0] = ulg;
++							att_val[nb_wr - 1].value <<= ulg_seq;
++							break;
++
++						case Tango::DEV_LONG64:
++							if (from_init == false)
++							{
++								if (!(str >> lg64))
++									throw_mem_value(device_list[i],att);
++								att.set_write_value(lg64);
++							}
++							else
++								att.get_write_value(lg64);
++
++							lg64_seq[0] = lg64;
++							att_val[nb_wr - 1].value <<= lg64_seq;
++							break;
++
++						case Tango::DEV_ULONG64:
++							if (from_init == false)
++							{
++								if (!(str >> ulg64))
++									throw_mem_value(device_list[i],att);
++								att.set_write_value(ulg64);
++							}
++							else
++								att.get_write_value(ulg64);
++
++							ulg64_seq[0] = ulg64;
++							att_val[nb_wr - 1].value <<= ulg64_seq;
++							break;
+ 						}
+ 
+-//						
++//
+ // Check the initialisation flag for memorized attributes.
+ // The the flag is false, do not add the element to the att_val
+ // vector. This avoids a call to write the memorozied value to the attribute.
+ //
+-					
++
+ 					if ( att.is_memorized_init() == false )
+-						{
++                    {
+ 						nb_wr--;
+ 						att_val.length(nb_wr);
+ 						// reset memorized flag
+ 						att.set_memorized(true);
+-						}
++                    }
+ 					else
+-						{
++                    {
+ //
+ // Init the AttributeValue structure
+ //
+-					
++
+ 						att_val[nb_wr - 1].name = CORBA::string_dup(att.get_name().c_str());
+ 						att_val[nb_wr - 1].dim_x = 1;
+-						att_val[nb_wr - 1].dim_y = 0;						
++						att_val[nb_wr - 1].dim_y = 0;
+ 						att_val[nb_wr - 1].quality = Tango::ATTR_VALID;
+ 						}
+ 					}
+-						
++
+ 					catch (Tango::DevFailed &e)
+ 					{
+ 						cout3 << "Cannot configure setpoint value for memorized attribute " << att.get_name() << endl;
+ 						Tango::Except::print_exception(e);
+-						
++
+ 						nb_wr--;
+ 						att_val.length(nb_wr);
+ 						// reset memorized flag
+ 						att.set_memorized(true);
+-					}						
++					}
+ 				}
+ 			}
+ 		}
+-			
+-																	
++
++
+ 		if (nb_wr != 0)
+ 		{
+-		
++
+ //
+ // Write attribute values. Re-throw exception if any but reset memorized flags before the
+ // re-throw.
+ //
+-			
++
+ 			try
+ 			{
+ 				cout4 << "Writing data for " << att_val.length() << " attribute(s) for device " << device_list[i]->get_name() << endl;
+@@ -686,7 +740,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 			catch (Tango::MultiDevFailed &e)
+ 			{
+ 				cout3 << "Cannot write setpoint(s) value for memorized attribute(s) " << device_list[i]->get_name() << endl;
+-				
++
+ 				Tango::NamedDevFailedList e_list (e, device_list[i]->get_name(), (const char *)"DeviceClass::set_memorized_values()",
+ 					       			(const char *)"API_AttributeFailed");
+ 				Tango::Except::print_exception(e_list);
+@@ -700,7 +754,7 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 				//	       			(const char *)"DeviceClass::set_memorized_values()",
+ 				//	       			(const char *)"API_AttributeFailed");
+ 			}
+-						
++
+ //
+ // Reset memorized flags
+ //
+@@ -714,13 +768,13 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ 	}
+ 
+ 	cout4 << "Leaving DeviceClass::set_memorized_values() method" << endl;
+-	
++
+ }
+ 
+ //+----------------------------------------------------------------------------
+ //
+ // method : 		DeviceClass::throw_mem_value()
+-// 
++//
+ // description : 	Write the memorized attribute with the value
+ //			stored in database
+ //
+@@ -729,13 +783,13 @@ void DeviceClass::set_memorized_values(bool all,long idx,bool from_init)
+ void DeviceClass::throw_mem_value(DeviceImpl *dev,Attribute &att)
+ {
+ 	TangoSys_OMemStream o;
+-	
++
+ 	o << "Memorized value for attribute ";
+ 	o << att.get_name();
+ 	o << " (device ";
+ 	o << dev->get_name();
+ 	o << ") is in an incorrect format !" << ends;
+-	
++
+ 	Except::throw_exception((const char *)"API_AttrWrongMemValue",
+ 				o.str(),
+ 				(const char *)"DeviceClass::set_memorized_values");
+@@ -744,7 +798,7 @@ void DeviceClass::throw_mem_value(DeviceImpl *dev,Attribute &att)
+ //+----------------------------------------------------------------------------
+ //
+ // method : 		DeviceClass::~DeviceClass(string &s)
+-// 
++//
+ // description :	DeviceClass destructor.
+ //
+ //-----------------------------------------------------------------------------
+@@ -758,7 +812,7 @@ DeviceClass::~DeviceClass()
+ //
+ 
+ 	delete db_class;
+-		
++
+ //
+ // Destroy the device list
+ //
+@@ -771,8 +825,8 @@ DeviceClass::~DeviceClass()
+ 
+ 		unsigned long nb_dev = device_list.size();
+ 		for (i = 0;i < nb_dev;i++)
+-		{	
+-				
++		{
++
+ //
+ // Clear vectors used to memorize info used to clean db
+ // in case of devices with dyn attr removed during device
+@@ -787,21 +841,21 @@ DeviceClass::~DeviceClass()
+ //
+ // Delete device
+ //
+-					
++
+ 			delete_dev(0,tg,r_poa);
+-					
++
+ //
+ // Clean-up db (dyn attribute)
+ //
+-					
++
+ 
+ 			if (tg->get_polled_dyn_attr_names().size() != 0)
+-				tg->clean_attr_polled_prop();			
++				tg->clean_attr_polled_prop();
+ 			if (tg->get_all_dyn_attr_names().size() != 0)
+ 				tg->clean_dyn_attr_prop();
+ 
+ 			vector<DeviceImpl *>::iterator it = device_list.begin();
+-			device_list.erase(it);		
++			device_list.erase(it);
+ 		}
+ 		device_list.clear();
+ 		CORBA::release(r_poa);
+@@ -820,27 +874,27 @@ DeviceClass::~DeviceClass()
+ //
+ 
+ 	delete class_attr;
+-		
++
+ //
+ // Unregister the class from signal handler
+ //
+ 
+ 	DServerSignal::instance()->unregister_class_signal(this);
+-	
++
+ //
+ // Delete the class extension object
+ //
+ 
+ 	delete ext;
+-	
+-	cout4 << "Leaving DeviceClass destructor for class " << name << endl;	
++
++	cout4 << "Leaving DeviceClass destructor for class " << name << endl;
+ }
+ 
+ 
+ //+----------------------------------------------------------------------------
+ //
+ // method : 		DeviceClass::delete_dev()
+-// 
++//
+ // description :	delete a device from the class device list
+ //
+ //-----------------------------------------------------------------------------
+@@ -859,7 +913,7 @@ void DeviceClass::delete_dev(long idx,Tango::Util *tg,PortableServer::POA_ptr r_
+ 	{
+ 		device_list[idx]->stop_polling(false);
+ 	}
+-	
++
+ //
+ // Deactivate the CORBA object
+ //
+@@ -869,7 +923,7 @@ void DeviceClass::delete_dev(long idx,Tango::Util *tg,PortableServer::POA_ptr r_
+ 
+ 	if (exported_device == true)
+ 		r_poa->deactivate_object(device_list[idx]->get_obj_id().in());
+-			
++
+ //
+ // Remove the servant.
+ // For C++ device, this will be automatically done by the POA when the last executing call
+@@ -882,14 +936,14 @@ void DeviceClass::delete_dev(long idx,Tango::Util *tg,PortableServer::POA_ptr r_
+ 		dev_3->delete_dev();
+ 	}
+ 
+-	cout4 << "Leaving DeviceClass delete_dev" << endl;	
++	cout4 << "Leaving DeviceClass delete_dev" << endl;
+ }
+ 
+ 
+ //+-------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::register_signal
+-// 
++//
+ // description :	Method to register a class on a signal. When the
+ //			signal is sent to the process, the signal_handler
+ //			method of this class will be executed
+@@ -905,7 +959,7 @@ void DeviceClass::register_signal(long signo)
+ 	cout4 << "DeviceClass::register_signal() arrived for signal " << signo << endl;
+ 
+ 	DServerSignal::instance()->register_class_signal(signo,this);
+-		
++
+ 	cout4 << "Leaving DeviceClass::register_signal method()" << endl;
+ }
+ #else
+@@ -914,7 +968,7 @@ void DeviceClass::register_signal(long signo,bool handler)
+ 	cout4 << "DeviceClass::register_signal() arrived for signal " << signo << endl;
+ 
+ 	DServerSignal::instance()->register_class_signal(signo,handler,this);
+-		
++
+ 	cout4 << "Leaving DeviceClass::register_signal method()" << endl;
+ }
+ #endif
+@@ -922,7 +976,7 @@ void DeviceClass::register_signal(long signo,bool handler)
+ //+-------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::unregister_signal
+-// 
++//
+ // description :	Method to unregister a class on a signal.
+ //
+ // in : 		signo : The signal number
+@@ -935,14 +989,14 @@ void DeviceClass::unregister_signal(long signo)
+ 	cout4 << "DeviceClass::unregister_signal() arrived for signal " << signo << endl;
+ 
+ 	DServerSignal::instance()->unregister_class_signal(signo,this);
+-		
++
+ 	cout4 << "Leaving DeviceClass::unregister_signal method()" << endl;
+ }
+ 
+ //+-------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::signal_handler
+-// 
++//
+ // description :	This is the signal handler for the class. This method
+ //			is defined as virtual and therefore, can be redefined
+ //			by DS programmers in their own classes derived from
+@@ -955,7 +1009,7 @@ void DeviceClass::unregister_signal(long signo)
+ void DeviceClass::signal_handler(long signo)
+ {
+ 	cout4 << "DeviceClass::signal_handler() arrived for signal " << signo << endl;
+-	
++
+ 	cout4 << "Leaving DeviceClass::signal_handler method()" << endl;
+ }
+ 
+@@ -963,8 +1017,8 @@ void DeviceClass::signal_handler(long signo)
+ //+-------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::export_device()
+-// 
+-// description :	This method exports a device to the outside world. 
++//
++// description :	This method exports a device to the outside world.
+ //			This is done by sending its CORBA network parameter
+ //			(mainly the IOR) to the Tango database
+ //
+@@ -982,11 +1036,11 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ 	cout4 << "DeviceClass::export_device() arrived" << endl;
+ 
+ 	Device_var d;
+-		
++
+ 	if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false))
+ 	{
+-			
+-// 
++
++//
+ // Activate the CORBA object incarnated by the dev C++ object
+ // Also call _remove_ref to give POA the full ownership of servant
+ //
+@@ -1020,11 +1074,11 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ 	}
+ 	else
+ 	{
+-	
++
+ //
+ // For server started without db usage (Mostly the database server). In this case,
+ // it is necessary to create our own CORBA object id and to bind it into the
+-// OOC Boot Manager for access through a stringified object reference 
++// OOC Boot Manager for access through a stringified object reference
+ // constructed using the corbaloc style
+ // The API will try to connect to device using lower case letters.
+ // Register device in POA with lower case letters
+@@ -1050,13 +1104,13 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ 						o.str(),
+ 						(const char *)"DeviceClass::export_device");
+ 		}
+-		
++
+ 		d = dev->_this();
+-		dev->set_obj_id(id);		
++		dev->set_obj_id(id);
+ 		dev->set_d_var(Tango::Device::_duplicate(d));
+-		dev->_remove_ref();	
++		dev->_remove_ref();
+ 	}
+-			
++
+ //
+ // Prepare sent parameters and allocate mem for them
+ //
+@@ -1064,13 +1118,13 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ 	if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false))
+ 	{
+ 		Tango::Util *tg = Tango::Util::instance();
+-		CORBA::ORB_ptr orb_ptr = tg->get_orb(); 
+-		
++		CORBA::ORB_ptr orb_ptr = tg->get_orb();
++
+ 		char *s = orb_ptr->object_to_string(d);
+ 		string ior_string(s);
+ 
+ 		Tango::DbDevExportInfo exp;
+-			
++
+ 		exp.name = dev->get_name();
+ 		exp.ior = ior_string;
+ 		exp.host = tg->get_host_name();
+@@ -1082,7 +1136,7 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ // We are still in the server starting phase. Therefore, the db timeout is still high (13 sec the 07/01/2011)
+ // with 3 retries in case of timeout
+ //
+-		
++
+ 		try
+ 		{
+ 			tg->get_database()->export_device(exp);
+@@ -1094,17 +1148,17 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ 			CORBA::string_free(s);
+ 			throw;
+ 		}
+-		
++
+ 		CORBA::release(orb_ptr);
+ 		CORBA::string_free(s);
+ 	}
+-	
++
+ //
+ // Set the DeviceImpl exported flag to true
+ //
+ 
+ 	dev->set_exported_flag(true);
+-			
++
+ 	cout4 << "Leaving DeviceClass::export_device method()" << endl;
+ }
+ 
+@@ -1112,7 +1166,7 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ //+----------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::command_handler(string &s)
+-// 
++//
+ // description :	Command handler which is called by Device
+ //			when a command is received. It will check
+ //			to see if the command is implemented. If
+@@ -1125,16 +1179,16 @@ void DeviceClass::export_device(DeviceImpl *dev,const char *corba_obj_name)
+ //-----------------------------------------------------------------------------
+ 
+ CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,const CORBA::Any &in_any)
+-{	
++{
+ 	CORBA::Any *ret = NULL;
+ 	vector<Command *>::iterator i_cmd;
+-	
++
+ 	string command_lower(command);
+ 
+ 	cout4 << "Entering DeviceClass::command_handler() method" << endl;
+ 
+ 	transform(command_lower.begin(),command_lower.end(),command_lower.begin(),::tolower);
+-	
++
+ 	for (i_cmd = command_list.begin();i_cmd < command_list.end();++i_cmd)
+ 	{
+ 		if ((*i_cmd)->get_lower_name() == command_lower)
+@@ -1170,20 +1224,20 @@ CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,cons
+ 
+ 	if (i_cmd == command_list.end())
+ 	{
+-	
++
+ 		cout3 << "DeviceClass::command_handler(): command " << command << " not found" << endl;
+ 
+ 
+ 		Command *def_cmd = get_default_command();
+ 		if (def_cmd != NULL)
+ 		{
+-		
++
+ //
+ // Set name in default command object
+ //
+ 
+ 			def_cmd->set_name(command);
+-					
++
+ //
+ // Call the always executed method
+ //
+@@ -1202,7 +1256,7 @@ CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,cons
+ 						o.str(),
+ 						(const char *)"DeviceClass::command_handler");
+ 			}
+-	
++
+ //
+ // Execute command
+ //
+@@ -1212,9 +1266,9 @@ CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,cons
+ 		}
+ 		else
+ 		{
+-		
+-					
+-//		
++
++
++//
+ // Throw an exception to client
+ //
+ 
+@@ -1226,8 +1280,8 @@ CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,cons
+ 					      (const char *)"DeviceClass::command_handler");
+ 		}
+ 	}
+-	
+-	cout4 << "Leaving DeviceClass::command_handler() method" << endl;	
++
++	cout4 << "Leaving DeviceClass::command_handler() method" << endl;
+ 	return ret;
+ }
+ 
+@@ -1235,7 +1289,7 @@ CORBA::Any *DeviceClass::command_handler(DeviceImpl *device,string &command,cons
+ //+----------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::add_wiz_dev_prop()
+-// 
++//
+ // description :	Method to add a device property definition for the
+ //			device  wizard
+ //
+@@ -1254,7 +1308,7 @@ void DeviceClass::add_wiz_dev_prop(string &p_name,string &desc,string &def)
+ 
+ 	string name_low = p_name;
+ 	transform(name_low.begin(),name_low.end(),name_low.begin(),::tolower);
+-	
++
+ //
+ // Check that this property is not already in the vector
+ //
+@@ -1267,7 +1321,7 @@ void DeviceClass::add_wiz_dev_prop(string &p_name,string &desc,string &def)
+ 		if (tmp_name == name_low)
+ 			break;
+ 	}
+-	
++
+ 	if (ite != wiz_dev_prop.end())
+ 	{
+ 		TangoSys_OMemStream o;
+@@ -1277,7 +1331,7 @@ void DeviceClass::add_wiz_dev_prop(string &p_name,string &desc,string &def)
+ 					o.str(),
+ 					(const char *)"DeviceClass::add_wiz_dev_prop");
+ 	}
+-	
++
+ //
+ // Insert data in vector
+ //
+@@ -1299,7 +1353,7 @@ void DeviceClass::add_wiz_dev_prop(string &p_name,string &desc)
+ //+----------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::add_wiz_class_prop()
+-// 
++//
+ // description :	Method to add a class property definition for the
+ //			device  wizard
+ //
+@@ -1317,7 +1371,7 @@ void DeviceClass::add_wiz_class_prop(string &p_name,string &desc,string &def)
+ 
+ 	string name_low = p_name;
+ 	transform(name_low.begin(),name_low.end(),name_low.begin(),::tolower);
+-	
++
+ //
+ // Check that this property is not already in the vector
+ //
+@@ -1340,7 +1394,7 @@ void DeviceClass::add_wiz_class_prop(string &p_name,string &desc,string &def)
+ 					o.str(),
+ 					(const char *)"DeviceClass::add_wiz_dev_prop");
+ 	}
+-	
++
+ //
+ // Insert data in vector
+ //
+@@ -1360,7 +1414,7 @@ void DeviceClass::add_wiz_class_prop(string &p_name,string &desc)
+ //+----------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::device_destroyer
+-// 
++//
+ // description :	Method to remove and delete a device from the running devices
+ //					belonging to the Tango class
+ //
+@@ -1370,27 +1424,27 @@ void DeviceClass::add_wiz_class_prop(string &p_name,string &desc)
+ 
+ void DeviceClass::device_destroyer(const string &dev_name)
+ {
+-	
++
+ //
+ // Check that the class know this device
+ //
+-  
+-  	unsigned long k;				
++
++  	unsigned long k;
+   	for (k = 0;k < device_list.size();k++)
+   	{
+   		if (device_list[k]->get_name() == dev_name)
+   			break;
+   	}
+-  
++
+   	if (k == device_list.size())
+   	{
+ 		TangoSys_OMemStream o;
+ 		o << "Device " << dev_name << " not in Tango class device list!" << ends;
+-		
++
+   		Tango::Except::throw_exception((const char *)"API_CantDestroyDevice",o.str(),
+   					       (const char *)"DeviceClass::device_destroyer");
+   	}
+-	
++
+ //
+ // Check if the device is polled
+ // If yes, ask polling thread to stop polling it
+@@ -1400,20 +1454,20 @@ void DeviceClass::device_destroyer(const string &dev_name)
+ 	{
+ 		device_list[k]->stop_polling();
+ 	}
+-	
+-			
++
++
+ //
+ // Delete the device
+ //
+- 
++
+ 	Tango::Util *tg = Tango::Util::instance();
+-	 			
++
+ 	PortableServer::POA_ptr r_poa = tg->get_poa();
+ 	delete_dev(k,tg,r_poa);
+ 	vector<DeviceImpl *>::iterator it = device_list.begin();
+ 	it += k;
+ 	device_list.erase(it);
+-	CORBA::release(r_poa);  	  				
++	CORBA::release(r_poa);
+ }
+ 
+ void DeviceClass::device_destroyer(const char *dev_name)
+@@ -1425,8 +1479,8 @@ void DeviceClass::device_destroyer(const char *dev_name)
+ //+----------------------------------------------------------------------------
+ //
+ // method :		DeviceClass::is_command_allowed
+-// 
+-// description :	Method to check if a command is allowed even if the device 
++//
++// description :	Method to check if a command is allowed even if the device
+ //					is locked by another client. It follows the definition
+ //					of the Tango control access system to define what is an
+ //					allowed command
+@@ -1438,14 +1492,14 @@ void DeviceClass::device_destroyer(const char *dev_name)
+ bool DeviceClass::is_command_allowed(const char *cmd)
+ {
+ 	bool ret = true;
+-	
++
+ 	string tmp_cmd(cmd);
+ 	transform(tmp_cmd.begin(),tmp_cmd.end(),tmp_cmd.begin(),::tolower);
+ 
+ 	vector<string>::iterator pos = find(allowed_cmds.begin(),allowed_cmds.end(),tmp_cmd);
+ 	if (pos == allowed_cmds.end())
+ 		ret = false;
+-	
++
+ 	return ret;
+ }
+ 
+diff --git a/lib/cpp/server/w_attribute.cpp b/lib/cpp/server/w_attribute.cpp
+index 534d335..61b123a 100644
+--- a/lib/cpp/server/w_attribute.cpp
++++ b/lib/cpp/server/w_attribute.cpp
+@@ -1,4 +1,4 @@
+-static const char *RcsId = "$Id: w_attribute.cpp 15556 2011-02-11 08:25:58Z taurel $\n$Name$";
++static const char *RcsId = "$Id$\n$Name$";
+ 
+ //+============================================================================
+ //
+@@ -25,16 +25,16 @@ static const char *RcsId = "$Id: w_attribute.cpp 15556 2011-02-11 08:25:58Z taur
+ // it under the terms of the GNU Lesser General Public License as published by
+ // the Free Software Foundation, either version 3 of the License, or
+ // (at your option) any later version.
+-// 
++//
+ // Tango 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 Tango.  If not, see <http://www.gnu.org/licenses/>.
+ //
+-// $Revision: 15556 $
++// $Revision$
+ //
+ // $Log$
+ // Revision 1.36  2010/10/05 08:19:24  taurel
+@@ -208,8 +208,8 @@ namespace Tango
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::WAttribute
+-// 
+-// description : 	constructor for the WAttribute class from the 
++//
++// description : 	constructor for the WAttribute class from the
+ //			attribute property vector, its type and the device
+ //			name
+ //
+@@ -231,11 +231,11 @@ WAttribute::WAttribute(vector<AttrProperty> &prop_list,
+ 
+ 	w_ext = new WAttributeExt();
+ 
+-	
++
+ //
+ // Init some data
+ //
+-	
++
+ 	short_val = old_short_val = 0;
+ 	long_val = old_long_val = 0;
+ 	double_val = old_double_val = 0.0;
+@@ -253,7 +253,7 @@ WAttribute::WAttribute(vector<AttrProperty> &prop_list,
+ 	encoded_val.encoded_format = CORBA::string_dup("Not initialised");
+ 	old_encoded_val.encoded_data.length(0);
+ 	old_encoded_val.encoded_format = CORBA::string_dup("Not initialised");
+-	
++
+ 	short_array_val.length(1);
+ 	short_array_val[0] = 0;
+ 	long_array_val.length(1);
+@@ -278,8 +278,8 @@ WAttribute::WAttribute(vector<AttrProperty> &prop_list,
+ 	w_ext->ulong64_array_val[0] = 0;
+ 	w_ext->state_array_val.length(1);
+ 	w_ext->state_array_val[0] = Tango::UNKNOWN;
+-	
+-				
++
++
+ 	short_ptr = &short_val;
+ 	w_dim_x = 1;
+ 	w_dim_y = 0;
+@@ -288,10 +288,10 @@ WAttribute::WAttribute(vector<AttrProperty> &prop_list,
+ //
+ // Init memorized field and eventually get the memorized value
+ //
+-	
++
+ 	set_memorized(tmp_attr.get_memorized());
+ 	set_memorized_init(tmp_attr.get_memorized_init());
+-	
++
+ 	if (is_memorized() == true)
+ 	{
+ 		try
+@@ -308,8 +308,8 @@ WAttribute::WAttribute(vector<AttrProperty> &prop_list,
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::~WAttribute
+-// 
+-// description : 	destructor for the WAttribute class 
++//
++// description : 	destructor for the WAttribute class
+ //
+ //--------------------------------------------------------------------------
+ 
+@@ -326,7 +326,7 @@ WAttribute::~WAttribute()
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::set_rvalue
+-// 
++//
+ // description : 	This method is used when a Writable attribute is
+ //			set to set the value in the Attribute class. This
+ //			is necessary for the read_attribute CORBA operation
+@@ -347,63 +347,77 @@ void WAttribute::set_rvalue()
+ 		else
+ 			set_value(const_cast<DevShort *>(short_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&long_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevLong *>(long_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG64:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&w_ext->long64_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevLong64 *>(w_ext->long64_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-				
++
+ 	case Tango::DEV_DOUBLE:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&double_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevDouble *>(double_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-		
++
+ 	case Tango::DEV_STRING:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&str_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevString *>(str_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-		
++
+ 	case Tango::DEV_FLOAT:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&float_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevFloat *>(float_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-		
++
+ 	case Tango::DEV_BOOLEAN:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&boolean_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevBoolean *>(boolean_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-				
++
+ 	case Tango::DEV_USHORT:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&ushort_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevUShort *>(ushort_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-		
++
+ 	case Tango::DEV_UCHAR:
+ 		if (data_format == Tango::SCALAR)
+ 			set_value(&uchar_val,1,0,false);
+ 		else
+ 			set_value(const_cast<DevUChar *>(uchar_array_val.get_buffer()),w_dim_x,w_dim_y,false);
+ 		break;
+-		
++
++	case Tango::DEV_ULONG:
++		if (data_format == Tango::SCALAR)
++			set_value(&w_ext->ulong_val,1,0,false);
++		else
++			set_value(const_cast<DevULong *>(w_ext->ulong_array_val.get_buffer()),w_dim_x,w_dim_y,false);
++		break;
++
++	case Tango::DEV_ULONG64:
++		if (data_format == Tango::SCALAR)
++			set_value(&w_ext->ulong64_val,1,0,false);
++		else
++			set_value(const_cast<DevULong64 *>(w_ext->ulong64_array_val.get_buffer()),w_dim_x,w_dim_y,false);
++		break;
++
+ 	case Tango::DEV_ENCODED:
+ 		set_value(&encoded_val,1,0,false);
+ 		break;
+@@ -413,7 +427,7 @@ void WAttribute::set_rvalue()
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::check_written_value
+-// 
++//
+ // description : 	Check the value sent by the caller and copy incoming data
+ //					for SCALAR attribute only
+ //
+@@ -425,11 +439,11 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ {
+ 	CORBA::ULong nb_data;
+ 	unsigned long i;
+-	
++
+ 	switch (data_type)
+ 	{
+ 	case Tango::DEV_SHORT :
+-	
++
+ //
+ // Check data type inside the any and data number
+ //
+@@ -438,7 +452,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		if ((any >>= sh_ptr) == false)
+ 		{
+ 			TangoSys_OMemStream o;
+-	
++
+ 			o << "Incompatible attribute type, expected type is : Tango::DevVarShortArray (even for single value)" << ends;
+ 			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
+ 					      o.str(),
+@@ -460,11 +474,11 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+-		
+-		
++
++
+ //
+ // Check the incoming value against min or max_value if needed
+ //
+@@ -476,7 +490,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*sh_ptr)[i] < min_value.sh)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is below the minimum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -492,7 +506,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*sh_ptr)[i] > max_value.sh)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is above the maximum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -505,7 +519,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		short_ptr = sh_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			old_short_val = short_val;		
++			old_short_val = short_val;
+ 			short_val = (*sh_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -515,11 +529,11 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			w_dim_x = x;
+ 			w_dim_y = y;
+ 		}
+-		
++
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG :
+-	
++
+ //
+ // Check data type inside the any
+ //
+@@ -550,10 +564,10 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+-		
++
+ //
+ // Check the incoming value
+ //
+@@ -565,7 +579,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*lg_ptr)[i] < min_value.lg)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is below the minimum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -581,7 +595,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*lg_ptr)[i] > max_value.lg)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is above the maximum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -594,7 +608,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		long_ptr = lg_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			old_long_val = long_val;		
++			old_long_val = long_val;
+ 			long_val = (*lg_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -606,10 +620,10 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		}
+ 
+ 		break;
+-		
+-		
++
++
+ 	case Tango::DEV_LONG64 :
+-	
++
+ //
+ // Check data type inside the any
+ //
+@@ -640,10 +654,10 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+-		
++
+ //
+ // Check the incoming value
+ //
+@@ -655,7 +669,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*lg64_ptr)[i] < min_value.lg64)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is below the minimum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -671,7 +685,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*lg64_ptr)[i] > max_value.lg64)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is above the maximum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -684,7 +698,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		w_ext->long64_ptr = lg64_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			w_ext->old_long64_val = w_ext->long64_val;		
++			w_ext->old_long64_val = w_ext->long64_val;
+ 			w_ext->long64_val = (*lg64_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -696,9 +710,9 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		}
+ 
+ 		break;
+-		
++
+ 	case Tango::DEV_DOUBLE :
+-	
++
+ //
+ // Check data type inside the any
+ //
+@@ -707,7 +721,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		if ((any >>= db_ptr) == false)
+ 		{
+ 			TangoSys_OMemStream o;
+-	
++
+ 			o << "Incompatible attribute type, expected type is : Tango::DevVarDoubleArray (even for single value)" << ends;
+ 			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
+ 					      o.str(),
+@@ -729,10 +743,10 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+-				
++
+ //
+ // Check the incoming value
+ // First check for NaN, INF
+@@ -764,7 +778,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*db_ptr)[i] < min_value.db)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is below the minimum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -778,7 +792,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*db_ptr)[i] > max_value.db)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is above the maximum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -786,12 +800,12 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 						      (const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		}		
++		}
+ 
+ 		double_ptr = db_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			old_double_val = double_val;		
++			old_double_val = double_val;
+ 			double_val = (*db_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -802,7 +816,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			w_dim_y = y;
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_STRING :
+ 
+ //
+@@ -813,7 +827,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		if ((any >>= string_ptr) == false)
+ 		{
+ 			TangoSys_OMemStream o;
+-	
++
+ 			o << "Incompatible attribute type, expected type is : Tango::DevVarStringArray (even for single value)" << ends;
+ 			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
+ 					      o.str(),
+@@ -835,7 +849,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+ 
+@@ -846,7 +860,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			CORBA::string_free(old_str_val);
+ 			old_str_val = CORBA::string_dup(str_val);
+ 			CORBA::string_free(str_val);
+-			
++
+ 			str_val = CORBA::string_dup((*string_ptr)[0]);
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -855,11 +869,11 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		{
+ 			w_dim_x = x;
+ 			w_dim_y = y;
+-		}			
++		}
+ 		break;
+-		
++
+ 	case Tango::DEV_FLOAT :
+-	
++
+ //
+ // Check data type inside the any
+ //
+@@ -868,7 +882,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		if ((any >>= fl_ptr) == false)
+ 		{
+ 			TangoSys_OMemStream o;
+-	
++
+ 			o << "Incompatible attribute type, expected type is : Tango::DevVarFloatArray (even for single value)" << ends;
+ 			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
+ 					      o.str(),
+@@ -890,10 +904,10 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+-				
++
+ //
+ // Check the incoming value
+ // First check for NaN, INF
+@@ -925,7 +939,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*fl_ptr)[i] < min_value.fl)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is below the minimum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -939,7 +953,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*fl_ptr)[i] > max_value.fl)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is above the maximum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -947,12 +961,12 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 						      (const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		}		
++		}
+ 
+ 		float_ptr = fl_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			old_float_val = float_val;		
++			old_float_val = float_val;
+ 			float_val = (*fl_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -963,9 +977,9 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			w_dim_y = y;
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_USHORT :
+-	
++
+ //
+ // Check data type inside the any
+ //
+@@ -974,7 +988,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		if ((any >>= ush_ptr) == false)
+ 		{
+ 			TangoSys_OMemStream o;
+-	
++
+ 			o << "Incompatible attribute type, expected type is : Tango::DevVarUShortArray (even for single value)" << ends;
+ 			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
+ 					      o.str(),
+@@ -996,10 +1010,10 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+-				
++
+ //
+ // Check the incoming value
+ //
+@@ -1011,7 +1025,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*ush_ptr)[i] < min_value.ush)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is below the minimum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -1027,7 +1041,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*ush_ptr)[i] > max_value.ush)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is above the maximum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -1035,12 +1049,12 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 						      (const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		}		
++		}
+ 
+ 		ushort_ptr = ush_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			old_ushort_val = ushort_val;		
++			old_ushort_val = ushort_val;
+ 			ushort_val = (*ush_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -1051,9 +1065,9 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			w_dim_y = y;
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_UCHAR :
+-	
++
+ //
+ // Check data type inside the any
+ //
+@@ -1062,7 +1076,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		if ((any >>= uch_ptr) == false)
+ 		{
+ 			TangoSys_OMemStream o;
+-	
++
+ 			o << "Incompatible attribute type, expected type is : Tango::DevVarCharArray (even for single value)" << ends;
+ 			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
+ 					      o.str(),
+@@ -1084,10 +1098,10 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+ 		}
+-				
++
+ //
+ // Check the incoming value
+ //
+@@ -1099,7 +1113,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*uch_ptr)[i] < min_value.uch)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is below the minimum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -1115,7 +1129,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 				if ((*uch_ptr)[i] > max_value.uch)
+ 				{
+ 					TangoSys_OMemStream o;
+-	
++
+ 					o << "Set value for attribute " << name;
+ 					o << " is above the maximum authorized (at least element " << i << ")" << ends;
+ 					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
+@@ -1123,12 +1137,12 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 						      (const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		}		
++		}
+ 
+ 		uchar_ptr = uch_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			old_uchar_val = uchar_val;		
++			old_uchar_val = uchar_val;
+ 			uchar_val = (*uch_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -1139,9 +1153,187 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			w_dim_y = y;
+ 		}
+ 		break;
+-		
++
++	case Tango::DEV_ULONG :
++
++//
++// Check data type inside the any
++//
++
++		const Tango::DevVarULongArray *ulo_ptr;
++		if ((any >>= ulo_ptr) == false)
++		{
++			TangoSys_OMemStream o;
++
++			o << "Incompatible attribute type, expected type is : Tango::DevVarULongArray (even for single value)" << ends;
++			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
++					      o.str(),
++					      (const char *)"WAttribute::check_written_value()");
++		}
++		nb_data = ulo_ptr->length();
++		if (y == 0)
++		{
++			if (nb_data != x)
++			{
++				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
++					        (const char *)"Incorrect data number",
++					        (const char *)"WAttribute::check_written_value()");
++			}
++		}
++		else
++		{
++			if (nb_data != (x * y))
++			{
++				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
++					        (const char *)"Incorrect data number",
++					        (const char *)"WAttribute::check_written_value()");
++			}
++		}
++
++//
++// Check the incoming value
++//
++
++		if (check_min_value == true)
++		{
++			for (i = 0;i < nb_data;i++)
++			{
++				if ((*ulo_ptr)[i] < min_value.ulg)
++				{
++					TangoSys_OMemStream o;
++
++					o << "Set value for attribute " << name;
++					o << " is below the minimum authorized (at least element " << i << ")" << ends;
++					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
++						      o.str(),
++						      (const char *)"WAttribute::check_written_value()");
++				}
++			}
++		}
++		if (check_max_value == true)
++		{
++			for (i = 0;i < nb_data;i++)
++			{
++				if ((*ulo_ptr)[i] > max_value.ulg)
++				{
++					TangoSys_OMemStream o;
++
++					o << "Set value for attribute " << name;
++					o << " is above the maximum authorized (at least element " << i << ")" << ends;
++					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
++						      o.str(),
++						      (const char *)"WAttribute::check_written_value()");
++				}
++			}
++		}
++
++		w_ext->ulong_ptr = ulo_ptr->get_buffer();
++		if (data_format == Tango::SCALAR)
++		{
++			w_ext->old_ulong_val = w_ext->ulong_val;
++			w_ext->ulong_val = (*ulo_ptr)[0];
++			w_dim_x = 1;
++			w_dim_y = 0;
++		}
++		else
++		{
++			w_dim_x = x;
++			w_dim_y = y;
++		}
++		break;
++
++	case Tango::DEV_ULONG64 :
++
++//
++// Check data type inside the any
++//
++
++		const Tango::DevVarULong64Array *ulg64_ptr;
++		if ((any >>= ulg64_ptr) == false)
++		{
++			TangoSys_OMemStream o;
++
++			o << "Incompatible attribute type, expected type is : Tango::DevVarULong64Array (even for single value)" << ends;
++			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
++					      o.str(),
++					      (const char *)"WAttribute::check_written_value()");
++		}
++		nb_data = ulg64_ptr->length();
++		if (y == 0)
++		{
++			if (nb_data != x)
++			{
++				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
++					        (const char *)"Incorrect data number",
++					        (const char *)"WAttribute::check_written_value()");
++			}
++		}
++		else
++		{
++			if (nb_data != (x * y))
++			{
++				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
++					        (const char *)"Incorrect data number",
++					        (const char *)"WAttribute::check_written_value()");
++			}
++		}
++
++//
++// Check the incoming value
++//
++
++		if (check_min_value == true)
++		{
++			for (i = 0;i < nb_data;i++)
++			{
++				if ((*ulg64_ptr)[i] < min_value.ulg64)
++				{
++					TangoSys_OMemStream o;
++
++					o << "Set value for attribute " << name;
++					o << " is below the minimum authorized (at least element " << i << ")" << ends;
++					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
++						      o.str(),
++						      (const char *)"WAttribute::check_written_value()");
++				}
++			}
++		}
++		if (check_max_value == true)
++		{
++			for (i = 0;i < nb_data;i++)
++			{
++				if ((*ulg64_ptr)[i] > max_value.ulg64)
++				{
++					TangoSys_OMemStream o;
++
++					o << "Set value for attribute " << name;
++					o << " is above the maximum authorized (at least element " << i << ")" << ends;
++					Except::throw_exception((const char *)"API_WAttrOutsideLimit",
++						      o.str(),
++						      (const char *)"WAttribute::check_written_value()");
++				}
++			}
++		}
++
++		w_ext->ulong64_ptr = ulg64_ptr->get_buffer();
++		if (data_format == Tango::SCALAR)
++		{
++			w_ext->old_ulong64_val = w_ext->ulong64_val;
++			w_ext->ulong64_val = (*ulg64_ptr)[0];
++			w_dim_x = 1;
++			w_dim_y = 0;
++		}
++		else
++		{
++			w_dim_x = x;
++			w_dim_y = y;
++		}
++
++		break;
++
++
+ 	case Tango::DEV_BOOLEAN :
+-	
++
+ //
+ // Check data type inside the any
+ //
+@@ -1150,7 +1342,7 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 		if ((any >>= boo_ptr) == false)
+ 		{
+ 			TangoSys_OMemStream o;
+-	
++
+ 			o << "Incompatible attribute type, expected type is : Tango::DevVarBooleanArray (even for single value)" << ends;
+ 			Except::throw_exception((const char *)"API_IncompatibleAttrDataType",
+ 					      o.str(),
+@@ -1172,14 +1364,14 @@ void WAttribute::check_written_value(const CORBA::Any &any,unsigned long x,unsig
+ 			{
+ 				Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        (const char *)"Incorrect data number",
+-					        (const char *)"WAttribute::check_written_value()");			
++					        (const char *)"WAttribute::check_written_value()");
+ 			}
+-		}	
++		}
+ 
+ 		boolean_ptr = boo_ptr->get_buffer();
+ 		if (data_format == Tango::SCALAR)
+ 		{
+-			old_boolean_val = boolean_val;		
++			old_boolean_val = boolean_val;
+ 			boolean_val = (*boo_ptr)[0];
+ 			w_dim_x = 1;
+ 			w_dim_y = 0;
+@@ -1202,7 +1394,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 	{
+ 	case Tango::DEV_SHORT :
+ 		{
+-	
++
+ //
+ // Check data type inside the union and data number
+ //
+@@ -1234,11 +1426,11 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		
+-		
++
++
+ //
+ // Check the incoming value against min or max_value if needed
+ //
+@@ -1279,7 +1471,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			short_ptr = sh_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_short_val = short_val;		
++				old_short_val = short_val;
+ 				short_val = sh_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -1293,7 +1485,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 		break;
+ 
+ 	case Tango::DEV_LONG :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -1324,10 +1516,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		
++
+ //
+ // Check the incoming value
+ //
+@@ -1368,7 +1560,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			long_ptr = lg_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_long_val = long_val;		
++				old_long_val = long_val;
+ 				long_val = lg_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -1380,10 +1572,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
+-		
++
++
+ 	case Tango::DEV_LONG64 :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -1414,10 +1606,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		
++
+ //
+ // Check the incoming value
+ //
+@@ -1458,7 +1650,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			w_ext->long64_ptr = lg64_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				w_ext->old_long64_val = w_ext->long64_val;		
++				w_ext->old_long64_val = w_ext->long64_val;
+ 				w_ext->long64_val = lg64_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -1470,9 +1662,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_DOUBLE :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -1503,10 +1695,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-				
++
+ //
+ // Check the incoming value
+ // First check for NaN, INF
+@@ -1560,12 +1752,12 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 						    	  (const char *)"WAttribute::check_written_value()");
+ 					}
+ 				}
+-			}		
++			}
+ 
+ 			double_ptr = db_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_double_val = double_val;		
++				old_double_val = double_val;
+ 				double_val = db_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -1577,7 +1769,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_STRING :
+ 		{
+ //
+@@ -1610,7 +1802,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+ 
+@@ -1631,11 +1823,11 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				w_dim_x = x;
+ 				w_dim_y = y;
+ 			}
+-		}		
++		}
+ 		break;
+-		
++
+ 	case Tango::DEV_FLOAT :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -1666,10 +1858,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-				
++
+ //
+ // Check the incoming value
+ // First check for NaN, INF
+@@ -1723,12 +1915,12 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 						    	  (const char *)"WAttribute::check_written_value()");
+ 					}
+ 				}
+-			}		
++			}
+ 
+ 			float_ptr = fl_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_float_val = float_val;		
++				old_float_val = float_val;
+ 				float_val = fl_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -1740,9 +1932,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_USHORT :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -1773,10 +1965,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-				
++
+ //
+ // Check the incoming value
+ //
+@@ -1812,12 +2004,12 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 						    	  (const char *)"WAttribute::check_written_value()");
+ 					}
+ 				}
+-			}		
++			}
+ 
+ 			ushort_ptr = ush_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_ushort_val = ushort_val;		
++				old_ushort_val = ushort_val;
+ 				ushort_val = ush_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -1829,9 +2021,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_UCHAR :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -1862,10 +2054,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-				
++
+ //
+ // Check the incoming value
+ //
+@@ -1901,12 +2093,12 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 						    	  (const char *)"WAttribute::check_written_value()");
+ 					}
+ 				}
+-			}		
++			}
+ 
+ 			uchar_ptr = uch_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_uchar_val = uchar_val;		
++				old_uchar_val = uchar_val;
+ 				uchar_val = uch_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -1918,9 +2110,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -1951,10 +2143,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-				
++
+ //
+ // Check the incoming value
+ //
+@@ -1990,12 +2182,12 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 						    	  (const char *)"WAttribute::check_written_value()");
+ 					}
+ 				}
+-			}		
++			}
+ 
+ 			w_ext->ulong_ptr = ulo_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				w_ext->old_ulong_val = w_ext->ulong_val;		
++				w_ext->old_ulong_val = w_ext->ulong_val;
+ 				w_ext->ulong_val = ulo_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -2007,9 +2199,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG64 :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -2040,10 +2232,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-				
++
+ //
+ // Check the incoming value
+ //
+@@ -2079,12 +2271,12 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 						    	  (const char *)"WAttribute::check_written_value()");
+ 					}
+ 				}
+-			}		
++			}
+ 
+ 			w_ext->ulong64_ptr = ulo64_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				w_ext->old_ulong64_val = w_ext->ulong64_val;		
++				w_ext->old_ulong64_val = w_ext->ulong64_val;
+ 				w_ext->ulong64_val = ulo64_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -2096,9 +2288,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_STATE :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -2129,10 +2321,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-				
++
+ //
+ // Check the incoming value
+ //
+@@ -2168,12 +2360,12 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 						    	  (const char *)"WAttribute::check_written_value()");
+ 					}
+ 				}
+-			}		
++			}
+ 
+ 			w_ext->state_ptr = sta_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				w_ext->old_dev_state_val = w_ext->dev_state_val;		
++				w_ext->old_dev_state_val = w_ext->dev_state_val;
+ 				w_ext->dev_state_val = sta_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -2185,9 +2377,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_BOOLEAN :
+-		{	
++		{
+ //
+ // Check data type inside the union
+ //
+@@ -2218,14 +2410,14 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        	(const char *)"Incorrect data number",
+-					        	(const char *)"WAttribute::check_written_value()");			
++					        	(const char *)"WAttribute::check_written_value()");
+ 				}
+-			}	
++			}
+ 
+ 			boolean_ptr = boo_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_boolean_val = boolean_val;		
++				old_boolean_val = boolean_val;
+ 				boolean_val = boo_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -2237,9 +2429,9 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			}
+ 		}
+ 		break;
+-		
++
+ 	case Tango::DEV_ENCODED :
+-		{	
++		{
+ 			if (att_union._d() != ATT_ENCODED)
+ 			{
+ 				TangoSys_OMemStream o;
+@@ -2267,10 +2459,10 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 				{
+ 					Except::throw_exception((const char *)"API_AttrIncorrectDataNumber",
+ 					        		(const char *)"Incorrect data number",
+-					        		(const char *)"WAttribute::check_written_value()");			
++					        		(const char *)"WAttribute::check_written_value()");
+ 				}
+ 			}
+-		
++
+ //
+ // Check the incoming value against min or max_value if needed
+ //
+@@ -2320,7 +2512,7 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 			encoded_ptr = enc_seq.get_buffer();
+ 			if (data_format == Tango::SCALAR)
+ 			{
+-				old_encoded_val = encoded_val;		
++				old_encoded_val = encoded_val;
+ 				encoded_val = enc_seq[0];
+ 				w_dim_x = 1;
+ 				w_dim_y = 0;
+@@ -2333,13 +2525,13 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ 		}
+ 		break;
+ 	}
+-		
++
+ }
+ 
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::get_write_value_length
+-// 
++//
+ // description : 	Returm to the caller the length of the new value to
+ //			be written into the attribute
+ //
+@@ -2348,14 +2540,14 @@ void WAttribute::check_written_value(const Tango::AttrValUnion &att_union,unsign
+ long WAttribute::get_write_value_length()
+ {
+ 	long ret_val;
+-	
++
+ 	if (data_format == Tango::SCALAR)
+ 		ret_val = 1;
+ 	else if (data_format == Tango::SPECTRUM)
+ 		ret_val = w_dim_x;
+ 	else
+ 		ret_val = w_dim_x * w_dim_y;
+-	
++
+ 	return ret_val;
+ }
+ 
+@@ -2363,9 +2555,9 @@ long WAttribute::get_write_value_length()
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::set_write_value() methods
+-// 
++//
+ // description : 	Set the attribute internal value.
+-//			There are different methods according to the 
++//			There are different methods according to the
+ //			attribute data type and the attribute type (scalar,
+ //       spectrum or image)
+ //
+@@ -2384,13 +2576,13 @@ void WAttribute::set_write_value(Tango::DevShort val)
+ 
+ 	check_written_value(tmp_any,1,0);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ void WAttribute::set_write_value(Tango::DevShort *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2436,7 +2628,7 @@ void WAttribute::set_write_value(Tango::DevLong val)
+ void WAttribute::set_write_value(Tango::DevLong *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2454,7 +2646,7 @@ void WAttribute::set_write_value(Tango::DevLong *val, long x, long y)
+ void WAttribute::set_write_value(vector<Tango::DevLong> &val, long x, long y)
+ {
+ 	Tango::DevVarLongArray tmp_seq(val.size(),val.size(),&val[0],false);
+-		
++
+ 	CORBA::Any 	tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 
+@@ -2471,8 +2663,8 @@ void WAttribute::set_write_value(Tango::DevLong64 val)
+ 	tmp_seq.length(1);
+ 	tmp_seq[0] = val;
+ 
+-	CORBA::Any tmp_any;		
+-	tmp_any <<= tmp_seq;	
++	CORBA::Any tmp_any;
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any,1,0);
+ 	copy_data(tmp_any);
+ 	set_user_set_write_value(true);
+@@ -2481,7 +2673,7 @@ void WAttribute::set_write_value(Tango::DevLong64 val)
+ void WAttribute::set_write_value(Tango::DevLong64 *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2490,7 +2682,7 @@ void WAttribute::set_write_value(Tango::DevLong64 *val, long x, long y)
+ 	Tango::DevVarLong64Array tmp_seq(nb_data, nb_data, val, false);
+ 
+ 	CORBA::Any 	tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+ 	set_user_set_write_value(true);
+@@ -2499,8 +2691,8 @@ void WAttribute::set_write_value(Tango::DevLong64 *val, long x, long y)
+ void WAttribute::set_write_value(vector<Tango::DevLong64> &val, long x, long y)
+ {
+ 	Tango::DevVarLong64Array tmp_seq(val.size(),val.size(),&val[0],false);
+-		
+-	CORBA::Any 	tmp_any;		
++
++	CORBA::Any 	tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+@@ -2525,7 +2717,7 @@ void WAttribute::set_write_value(Tango::DevDouble val)
+ void WAttribute::set_write_value(Tango::DevDouble *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2544,11 +2736,11 @@ void WAttribute::set_write_value(vector<Tango::DevDouble> &val, long x, long y)
+ {
+ 	CORBA::Any 	tmp_any;
+ 	Tango::DevVarDoubleArray tmp_seq(val.size(),val.size(),&val[0],false);
+-		
++
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ // DevString:
+@@ -2582,7 +2774,7 @@ void WAttribute::set_write_value(string &val)
+ void WAttribute::set_write_value(Tango::DevString *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2591,22 +2783,22 @@ void WAttribute::set_write_value(Tango::DevString *val, long x, long y)
+ 	Tango::DevVarStringArray tmp_seq(nb_data,nb_data,val,false);
+ 
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ void WAttribute::set_write_value(vector<string> &val, long x, long y)
+ {
+ 	Tango::DevVarStringArray tmp_seq;
+ 	tmp_seq << val;
+-		
++
+ 	CORBA::Any tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ // DevFloat:
+@@ -2627,7 +2819,7 @@ void WAttribute::set_write_value(Tango::DevFloat val)
+ void WAttribute::set_write_value(Tango::DevFloat *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2638,18 +2830,18 @@ void WAttribute::set_write_value(Tango::DevFloat *val, long x, long y)
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ void WAttribute::set_write_value(vector<Tango::DevFloat> &val, long x, long y)
+ {
+ 	Tango::DevVarFloatArray tmp_seq(val.size(),val.size(),&val[0],false);
+-		
++
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);		
++	set_user_set_write_value(true);
+ }
+ 
+ // DevBoolean:
+@@ -2670,7 +2862,7 @@ void WAttribute::set_write_value(Tango::DevBoolean val)
+ void WAttribute::set_write_value(Tango::DevBoolean *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2679,22 +2871,22 @@ void WAttribute::set_write_value(Tango::DevBoolean *val, long x, long y)
+ 	Tango::DevVarBooleanArray tmp_seq(nb_data,nb_data,val,false);
+ 
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ void WAttribute::set_write_value(vector<Tango::DevBoolean> &val, long x, long y)
+ {
+ 	Tango::DevVarBooleanArray tmp_seq;
+ 	tmp_seq << val;
+-		
++
+ 	CORBA::Any tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ // DevUShort:
+@@ -2706,16 +2898,16 @@ void WAttribute::set_write_value(Tango::DevUShort val)
+ 	tmp_seq[0] = val;
+ 
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any,1,0);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ void WAttribute::set_write_value(Tango::DevUShort *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2734,7 +2926,7 @@ void WAttribute::set_write_value(vector<Tango::DevUShort> &val, long x, long y)
+ {
+ 	Tango::DevVarUShortArray tmp_seq(val.size(),val.size(),&val[0],false);
+ 
+-	CORBA::Any tmp_any;		
++	CORBA::Any tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+@@ -2759,7 +2951,7 @@ void WAttribute::set_write_value(Tango::DevUChar val)
+ void WAttribute::set_write_value(Tango::DevUChar *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2777,12 +2969,12 @@ void WAttribute::set_write_value(Tango::DevUChar *val, long x, long y)
+ void WAttribute::set_write_value(vector<Tango::DevUChar> &val, long x, long y)
+ {
+ 	Tango::DevVarUCharArray tmp_seq(val.size(),val.size(),&val[0],false);
+-		
++
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ // DevULong:
+@@ -2803,7 +2995,7 @@ void WAttribute::set_write_value(Tango::DevULong val)
+ void WAttribute::set_write_value(Tango::DevULong *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2812,7 +3004,7 @@ void WAttribute::set_write_value(Tango::DevULong *val, long x, long y)
+ 	Tango::DevVarULongArray tmp_seq(nb_data,nb_data,val,false);
+ 
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+ 	set_user_set_write_value(true);
+@@ -2821,7 +3013,7 @@ void WAttribute::set_write_value(Tango::DevULong *val, long x, long y)
+ void WAttribute::set_write_value(vector<Tango::DevULong> &val, long x, long y)
+ {
+ 	Tango::DevVarULongArray tmp_seq(val.size(),val.size(),&val[0],false);
+-		
++
+ 	CORBA::Any tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+@@ -2838,7 +3030,7 @@ void WAttribute::set_write_value(Tango::DevULong64 val)
+ 	tmp_seq[0] = val;
+ 
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any,1,0);
+ 	copy_data(tmp_any);
+ 	set_user_set_write_value(true);
+@@ -2847,7 +3039,7 @@ void WAttribute::set_write_value(Tango::DevULong64 val)
+ void WAttribute::set_write_value(Tango::DevULong64 *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2859,13 +3051,13 @@ void WAttribute::set_write_value(Tango::DevULong64 *val, long x, long y)
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ void WAttribute::set_write_value(vector<Tango::DevULong64> &val, long x, long y)
+ {
+ 	Tango::DevVarULong64Array tmp_seq(val.size(),val.size(),&val[0],false);
+-		
++
+ 	CORBA::Any tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+@@ -2882,7 +3074,7 @@ void WAttribute::set_write_value(Tango::DevState val)
+ 	tmp_seq[0] = val;
+ 
+ 	CORBA::Any tmp_any;
+-	tmp_any <<= tmp_seq;	
++	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any,1,0);
+ 	copy_data(tmp_any);
+ 	set_user_set_write_value(true);
+@@ -2891,7 +3083,7 @@ void WAttribute::set_write_value(Tango::DevState val)
+ void WAttribute::set_write_value(Tango::DevState *val, long x, long y)
+ {
+ 	long nb_data;
+-	
++
+ 	if (y == 0)
+ 		nb_data = x;
+ 	else
+@@ -2903,14 +3095,14 @@ void WAttribute::set_write_value(Tango::DevState *val, long x, long y)
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+-	set_user_set_write_value(true);	
++	set_user_set_write_value(true);
+ }
+ 
+ void WAttribute::set_write_value(vector<Tango::DevState> &val, long x, long y)
+ {
+ 	Tango::DevVarStateArray tmp_seq(val.size(),val.size(),&val[0],false);
+ 
+-	CORBA::Any tmp_any;		
++	CORBA::Any tmp_any;
+ 	tmp_any <<= tmp_seq;
+ 	check_written_value(tmp_any, x, y);
+ 	copy_data(tmp_any);
+@@ -2934,7 +3126,7 @@ void WAttribute::set_write_value(Tango::DevEncoded *, TANGO_UNUSED(long x),TANGO
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::rollback
+-// 
++//
+ // description : 	Reset the internal data to its value before the
+ //			set_write_value method was applied (Useful in case of
+ //			error in the set_write_value method)
+@@ -2948,48 +3140,48 @@ void WAttribute::rollback()
+ 	case Tango::DEV_SHORT :
+ 		short_val = old_short_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG :
+ 		long_val = old_long_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG64 :
+ 		w_ext->long64_val = w_ext->old_long64_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_DOUBLE :
+ 		double_val = old_double_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_STRING :
+ 		CORBA::string_free(str_val);
+ 		str_val = CORBA::string_dup(old_str_val);
+ 		break;
+-		
++
+ 	case Tango::DEV_FLOAT :
+ 		float_val = old_float_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_BOOLEAN :
+ 		boolean_val = old_boolean_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_USHORT :
+ 		double_val = old_double_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_UCHAR :
+ 		CORBA::string_free(str_val);
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG :
+ 		w_ext->ulong_val = w_ext->old_ulong_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG64 :
+ 		w_ext->ulong64_val = w_ext->old_ulong64_val;
+ 		break;
+-		
++
+ 	case Tango::DEV_STATE :
+ 		w_ext->dev_state_val = w_ext->old_dev_state_val;
+ 		break;
+@@ -2999,7 +3191,7 @@ void WAttribute::rollback()
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::copy_data
+-// 
++//
+ // description : 	Copy data into the attribute object in order to return
+ //			them in case of a read on this attribute
+ //
+@@ -3008,141 +3200,141 @@ void WAttribute::rollback()
+ //--------------------------------------------------------------------------
+ 
+ void WAttribute::copy_data(const CORBA::Any &any)
+-{	
++{
+ 	switch (data_type)
+ 	{
+ 	case Tango::DEV_SHORT :
+ 		const Tango::DevVarShortArray *sh_ptr;
+-		any >>= sh_ptr;	
+-		short_array_val = *sh_ptr;	
++		any >>= sh_ptr;
++		short_array_val = *sh_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG :
+ 		const Tango::DevVarLongArray *lo_ptr;
+ 		any >>= lo_ptr;
+-		long_array_val = *lo_ptr;	
++		long_array_val = *lo_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG64 :
+ 		const Tango::DevVarLong64Array *lo64_ptr;
+ 		any >>= lo64_ptr;
+-		w_ext->long64_array_val = *lo64_ptr;	
++		w_ext->long64_array_val = *lo64_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_DOUBLE :
+ 		const Tango::DevVarDoubleArray *db_ptr;
+ 		any >>= db_ptr;
+-		double_array_val = *db_ptr;	
++		double_array_val = *db_ptr;
+ 		break;
+ 
+ 	case Tango::DEV_STRING :
+ 		const Tango::DevVarStringArray *tmp_str_ptr;
+ 		any >>= tmp_str_ptr;
+-		str_array_val = *tmp_str_ptr;	
++		str_array_val = *tmp_str_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_FLOAT :
+ 		const Tango::DevVarFloatArray *fl_ptr;
+ 		any >>= fl_ptr;
+-		float_array_val = *fl_ptr;	
++		float_array_val = *fl_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_BOOLEAN :
+ 		const Tango::DevVarBooleanArray *boo_ptr;
+ 		any >>= boo_ptr;
+-		boolean_array_val = *boo_ptr;	
++		boolean_array_val = *boo_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_USHORT :
+ 		const Tango::DevVarUShortArray *ush_ptr;
+ 		any >>= ush_ptr;
+-		ushort_array_val = *ush_ptr;	
++		ushort_array_val = *ush_ptr;
+ 		break;
+ 
+ 	case Tango::DEV_UCHAR :
+ 		const Tango::DevVarCharArray *uch_ptr;
+ 		any >>= uch_ptr;
+-		uchar_array_val = *uch_ptr;	
++		uchar_array_val = *uch_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG :
+ 		const Tango::DevVarULongArray *ulo_ptr;
+ 		any >>= ulo_ptr;
+-		w_ext->ulong_array_val = *ulo_ptr;	
++		w_ext->ulong_array_val = *ulo_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG64 :
+ 		const Tango::DevVarULong64Array *ulo64_ptr;
+ 		any >>= ulo64_ptr;
+-		w_ext->ulong64_array_val = *ulo64_ptr;	
++		w_ext->ulong64_array_val = *ulo64_ptr;
+ 		break;
+-		
++
+ 	case Tango::DEV_STATE :
+ 		const Tango::DevVarStateArray *sta_ptr;
+ 		any >>= sta_ptr;
+-		w_ext->state_array_val = *sta_ptr;	
+-		break;			
++		w_ext->state_array_val = *sta_ptr;
++		break;
+ 	}
+ }
+ 
+ 
+ void WAttribute::copy_data(const Tango::AttrValUnion &the_union)
+-{	
++{
+ 	switch (data_type)
+ 	{
+ 	case Tango::DEV_SHORT :
+-		short_array_val = the_union.short_att_value();	
++		short_array_val = the_union.short_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG :
+-		long_array_val = the_union.long_att_value();	
++		long_array_val = the_union.long_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_LONG64 :
+-		w_ext->long64_array_val = the_union.long64_att_value();	
++		w_ext->long64_array_val = the_union.long64_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_DOUBLE :
+-		double_array_val = the_union.double_att_value();	
++		double_array_val = the_union.double_att_value();
+ 		break;
+ 
+ 	case Tango::DEV_STRING :
+-		str_array_val = the_union.string_att_value();	
++		str_array_val = the_union.string_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_FLOAT :
+-		float_array_val = the_union.float_att_value();	
++		float_array_val = the_union.float_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_BOOLEAN :
+-		boolean_array_val = the_union.bool_att_value();	
++		boolean_array_val = the_union.bool_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_USHORT :
+-		ushort_array_val = the_union.ushort_att_value();	
++		ushort_array_val = the_union.ushort_att_value();
+ 		break;
+ 
+ 	case Tango::DEV_UCHAR :
+-		uchar_array_val = the_union.uchar_att_value();	
++		uchar_array_val = the_union.uchar_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG :
+-		w_ext->ulong_array_val = the_union.ulong_att_value();	
++		w_ext->ulong_array_val = the_union.ulong_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_ULONG64 :
+-		w_ext->ulong64_array_val = the_union.ulong64_att_value();	
++		w_ext->ulong64_array_val = the_union.ulong64_att_value();
+ 		break;
+-		
++
+ 	case Tango::DEV_STATE :
+-		w_ext->state_array_val = the_union.state_att_value();	
+-		break;			
++		w_ext->state_array_val = the_union.state_att_value();
++		break;
+ 	}
+ }
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::set_written_date
+-// 
++//
+ // description : 	Memorized when the attribute is written
+ //
+ //--------------------------------------------------------------------------
+@@ -3155,7 +3347,7 @@ void WAttribute::set_written_date()
+ 
+ 	write_date.tv_sec = (CORBA::Long)t.time;
+ 	write_date.tv_usec = (CORBA::Long)(t.millitm * 1000);
+-#else	
++#else
+ 	struct timezone tz;
+ 	struct timeval tv;
+ 	gettimeofday(&tv,&tz);
+@@ -3168,9 +3360,9 @@ void WAttribute::set_written_date()
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::check_rds_alarm
+-// 
++//
+ // description : 	Check if the attribute is in read different from set
+-//			alarm. 
++//			alarm.
+ //
+ // This method returns true if the attribute has a read too different than the
+ // the last set value. Otherwise, returns false.
+@@ -3187,7 +3379,7 @@ bool WAttribute::check_rds_alarm()
+ 
+ 	if (write_date.tv_sec == 0)
+ 		return false;
+-			
++
+ //
+ // First, check if it is necessary to check attribute value
+ // Give some time to the device to change its output
+@@ -3200,14 +3392,14 @@ bool WAttribute::check_rds_alarm()
+ 
+ 	tv.tv_sec = (CORBA::Long)t.time;
+ 	tv.tv_usec = (CORBA::Long)(t.millitm * 1000);
+-#else	
++#else
+ 	struct timezone tz;
+ 	gettimeofday(&tv,&tz);
+ #endif
+ 
+ 	long time_diff;
+ 	COMPUTE_TIME_DIFF(time_diff,write_date,tv);
+-	
++
+ 	if (time_diff >= delta_t)
+ 	{
+ 
+@@ -3216,7 +3408,7 @@ bool WAttribute::check_rds_alarm()
+ //
+ 
+ 		long nb_written,nb_read,nb_data,i;
+-		
++
+ 		switch (data_type)
+ 		{
+ 		case Tango::DEV_SHORT:
+@@ -3235,7 +3427,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_LONG:
+ 			nb_written = long_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.lg_seq->length();
+@@ -3252,7 +3444,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_LONG64:
+ 			nb_written = w_ext->long64_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.lg64_seq->length();
+@@ -3260,13 +3452,13 @@ bool WAttribute::check_rds_alarm()
+ 			for (i = 0;i < nb_data;i++)
+ 			{
+ 				DevLong64 delta = (data_format == Tango::SCALAR) ? w_ext->long64_array_val[0] - get_tmp_scalar_long64()[0] : w_ext->long64_array_val[i] - (*value.lg64_seq)[i];
+-				
++
+ 				DevLong64 abs_delta;
+ 				if (delta < 0)
+ 					abs_delta = -delta;
+ 				else
+ 					abs_delta = delta;
+-					
++
+ 				if (abs_delta >= delta_val.lg64)
+ 				{
+ 					quality = Tango::ATTR_ALARM;
+@@ -3276,7 +3468,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_DOUBLE:
+ 			nb_written = double_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.db_seq->length();
+@@ -3298,7 +3490,7 @@ bool WAttribute::check_rds_alarm()
+ 						// send an alarm if only read or set value are NAN
+ 						if ( !(_isnan(double_array_val[0]) && _isnan(tmp_db[0])) )
+ 						{
+-#endif						
++#endif
+ 							quality = Tango::ATTR_ALARM;
+ 							alarm.set(rds);
+ 							ret = true;
+@@ -3328,8 +3520,8 @@ bool WAttribute::check_rds_alarm()
+ 						}
+ 					}
+ 				}
+-				
+-				
++
++
+ 				double delta = (data_format == Tango::SCALAR) ? double_array_val[0] - tmp_db[0] : double_array_val[i] - (*value.db_seq)[i];
+ 				if (fabs(delta) >= delta_val.db)
+ 				{
+@@ -3340,7 +3532,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_FLOAT:
+ 			nb_written = float_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.fl_seq->length();
+@@ -3392,7 +3584,7 @@ bool WAttribute::check_rds_alarm()
+ 						}
+ 					}
+ 				}
+-				
++
+ 				float delta = (data_format == Tango::SCALAR) ? float_array_val[0] - tmp_fl[0] : float_array_val[i] - (*value.fl_seq)[i];
+ #if ((defined __SUNPRO_CC) || (defined _TG_WINDOWS_) || (defined GCC_SOLARIS))
+ 				double delta_d = (double)delta;
+@@ -3408,7 +3600,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_USHORT:
+ 			nb_written = ushort_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.ush_seq->length();
+@@ -3425,7 +3617,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_UCHAR:
+ 			nb_written = uchar_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.cha_seq->length();
+@@ -3442,7 +3634,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_ULONG:
+ 			nb_written = w_ext->ulong_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.ulg_seq->length();
+@@ -3459,7 +3651,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_ULONG64:
+ 			nb_written = w_ext->ulong64_array_val.length();
+ 			nb_read = (data_format == Tango::SCALAR) ? 1 : value.ulg64_seq->length();
+@@ -3467,13 +3659,13 @@ bool WAttribute::check_rds_alarm()
+ 			for (i = 0;i < nb_data;i++)
+ 			{
+ 				DevLong64 delta = (data_format == Tango::SCALAR) ? w_ext->ulong64_array_val[0] - get_tmp_scalar_ulong64()[0] : w_ext->ulong64_array_val[i] - (*value.ulg64_seq)[i];
+-				
++
+ 				DevULong64 abs_delta;
+ 				if (delta < 0)
+ 					abs_delta = -delta;
+ 				else
+ 					abs_delta = delta;
+-					
++
+ 				if (abs_delta >= delta_val.ulg64)
+ 				{
+ 					quality = Tango::ATTR_ALARM;
+@@ -3483,7 +3675,7 @@ bool WAttribute::check_rds_alarm()
+ 				}
+ 			}
+ 			break;
+-			
++
+ 		case Tango::DEV_ENCODED:
+ 			nb_written = ::strlen(encoded_val.encoded_format.in());
+ 			nb_read = ::strlen((*value.enc_seq)[0].encoded_format.in());
+@@ -3501,7 +3693,7 @@ bool WAttribute::check_rds_alarm()
+ 				ret = true;
+ 				break;
+ 			}
+-			
++
+ 			nb_written = encoded_val.encoded_data.length();
+ 			nb_read = (*value.enc_seq)[0].encoded_data.length();
+ 			nb_data = (nb_written > nb_read) ? nb_read : nb_written;
+@@ -3519,16 +3711,16 @@ bool WAttribute::check_rds_alarm()
+ 			break;
+ 		}
+ 	}
+-	
++
+ 	return ret;
+ }
+ 
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::get_min_value
+-// 
++//
+ // description : 	Get the attribute min_value ar throws an exception if
+-//			the attribute does not have a minimum value set 
++//			the attribute does not have a minimum value set
+ //
+ //--------------------------------------------------------------------------
+ 
+@@ -3540,7 +3732,7 @@ void WAttribute::get_min_value(Tango::DevShort &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevShort",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3558,7 +3750,7 @@ void WAttribute::get_min_value(Tango::DevLong &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3576,7 +3768,7 @@ void WAttribute::get_min_value(Tango::DevLong64 &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong64",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3594,7 +3786,7 @@ void WAttribute::get_min_value(Tango::DevDouble &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevDouble",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3612,7 +3804,7 @@ void WAttribute::get_min_value(Tango::DevFloat &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevFloat",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3630,7 +3822,7 @@ void WAttribute::get_min_value(Tango::DevUShort &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUShort",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3648,7 +3840,7 @@ void WAttribute::get_min_value(Tango::DevUChar &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUChar",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3666,7 +3858,7 @@ void WAttribute::get_min_value(Tango::DevULong &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevULong",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3684,7 +3876,7 @@ void WAttribute::get_min_value(Tango::DevULong64 &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUChar",
+ 				      (const char *)"WAttribute::get_min_value()");
+ 	}
+-	
++
+ 	if (check_min_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3697,9 +3889,9 @@ void WAttribute::get_min_value(Tango::DevULong64 &val)
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::get_max_value
+-// 
++//
+ // description : 	Get the attribute max_value ar throws an exception if
+-//			the attribute does not have a maximum value set 
++//			the attribute does not have a maximum value set
+ //
+ //--------------------------------------------------------------------------
+ 
+@@ -3711,7 +3903,7 @@ void WAttribute::get_max_value(Tango::DevShort &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevShort",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3729,7 +3921,7 @@ void WAttribute::get_max_value(Tango::DevLong &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3747,7 +3939,7 @@ void WAttribute::get_max_value(Tango::DevLong64 &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong64",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3765,7 +3957,7 @@ void WAttribute::get_max_value(Tango::DevDouble &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevDouble",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3783,7 +3975,7 @@ void WAttribute::get_max_value(Tango::DevFloat &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevFloat",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3801,7 +3993,7 @@ void WAttribute::get_max_value(Tango::DevUShort &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUShort",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3819,7 +4011,7 @@ void WAttribute::get_max_value(Tango::DevUChar &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUChar",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3837,7 +4029,7 @@ void WAttribute::get_max_value(Tango::DevULong &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevULong",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3855,7 +4047,7 @@ void WAttribute::get_max_value(Tango::DevULong64 &val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevULong64",
+ 				      (const char *)"WAttribute::get_max_value()");
+ 	}
+-	
++
+ 	if (check_max_value == false)
+ 	{
+ 		Except::throw_exception((const char *)"API_AttrNotAllowed",
+@@ -3867,7 +4059,7 @@ void WAttribute::get_max_value(Tango::DevULong64 &val)
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::set_max_value
+-// 
++//
+ // description : 	Set the attribute max_value
+ //
+ //--------------------------------------------------------------------------
+@@ -3887,14 +4079,14 @@ void WAttribute::set_max_value(Tango::DevDouble &new_val)
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	double old_max = max_value.db;
+ 	max_value.db = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -3919,7 +4111,7 @@ void WAttribute::set_max_value(Tango::DevDouble &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -3935,21 +4127,21 @@ void WAttribute::set_max_value(Tango::DevShort &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevShort",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	short old_max = max_value.sh;
+ 	max_value.sh = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -3966,7 +4158,7 @@ void WAttribute::set_max_value(Tango::DevShort &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -3974,7 +4166,7 @@ void WAttribute::set_max_value(Tango::DevShort &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -3990,21 +4182,21 @@ void WAttribute::set_max_value(Tango::DevLong &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	long old_max = max_value.lg;
+ 	max_value.lg = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4021,7 +4213,7 @@ void WAttribute::set_max_value(Tango::DevLong &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4029,7 +4221,7 @@ void WAttribute::set_max_value(Tango::DevLong &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4045,21 +4237,21 @@ void WAttribute::set_max_value(Tango::DevLong64 &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong64",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	DevLong64 old_max = max_value.lg64;
+ 	max_value.lg64 = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4076,7 +4268,7 @@ void WAttribute::set_max_value(Tango::DevLong64 &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4084,7 +4276,7 @@ void WAttribute::set_max_value(Tango::DevLong64 &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4101,21 +4293,21 @@ void WAttribute::set_max_value(Tango::DevFloat &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevFloat",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	float old_max = max_value.fl;
+ 	max_value.fl = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4132,7 +4324,7 @@ void WAttribute::set_max_value(Tango::DevFloat &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4140,7 +4332,7 @@ void WAttribute::set_max_value(Tango::DevFloat &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4156,21 +4348,21 @@ void WAttribute::set_max_value(Tango::DevUShort &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUShort",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	unsigned short old_max = max_value.ush;
+ 	max_value.ush = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4187,7 +4379,7 @@ void WAttribute::set_max_value(Tango::DevUShort &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4195,7 +4387,7 @@ void WAttribute::set_max_value(Tango::DevUShort &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4212,21 +4404,21 @@ void WAttribute::set_max_value(Tango::DevUChar &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUChar",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	unsigned char old_max = max_value.uch;
+ 	max_value.uch = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4251,7 +4443,7 @@ void WAttribute::set_max_value(Tango::DevUChar &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4267,21 +4459,21 @@ void WAttribute::set_max_value(Tango::DevULong &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevULong",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	DevULong old_max = max_value.ulg;
+ 	max_value.ulg = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4306,7 +4498,7 @@ void WAttribute::set_max_value(Tango::DevULong &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4322,21 +4514,21 @@ void WAttribute::set_max_value(Tango::DevULong64 &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevULong64",
+ 				      (const char *)"WAttribute::set_max_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	DevULong64 old_max = max_value.ulg64;
+ 	max_value.ulg64 = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4353,7 +4545,7 @@ void WAttribute::set_max_value(Tango::DevULong64 &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4361,7 +4553,7 @@ void WAttribute::set_max_value(Tango::DevULong64 &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	max_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4372,8 +4564,8 @@ void WAttribute::set_max_value(Tango::DevULong64 &new_val)
+ //+-------------------------------------------------------------------------
+ //
+ // method : 		WAttribute::set_min_value
+-// 
+-// description : 	Set the attribute min_value 
++//
++// description : 	Set the attribute min_value
+ //
+ //--------------------------------------------------------------------------
+ 
+@@ -4392,14 +4584,14 @@ void WAttribute::set_min_value(Tango::DevDouble &new_val)
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	double old_min = min_value.db;
+ 	min_value.db = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4424,7 +4616,7 @@ void WAttribute::set_min_value(Tango::DevDouble &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4440,21 +4632,21 @@ void WAttribute::set_min_value(Tango::DevShort &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevShort",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	short old_min = min_value.sh;
+ 	min_value.sh = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4471,7 +4663,7 @@ void WAttribute::set_min_value(Tango::DevShort &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4479,7 +4671,7 @@ void WAttribute::set_min_value(Tango::DevShort &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4495,21 +4687,21 @@ void WAttribute::set_min_value(Tango::DevLong &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	DevLong old_min = min_value.lg;
+ 	min_value.lg = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4526,7 +4718,7 @@ void WAttribute::set_min_value(Tango::DevLong &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4534,7 +4726,7 @@ void WAttribute::set_min_value(Tango::DevLong &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4550,21 +4742,21 @@ void WAttribute::set_min_value(Tango::DevLong64 &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevLong64",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	DevLong64 old_min = min_value.lg64;
+ 	min_value.lg64 = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4581,7 +4773,7 @@ void WAttribute::set_min_value(Tango::DevLong64 &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4589,7 +4781,7 @@ void WAttribute::set_min_value(Tango::DevLong64 &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4605,21 +4797,21 @@ void WAttribute::set_min_value(Tango::DevFloat &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevFloat",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	float old_min = min_value.fl;
+ 	min_value.fl = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4636,7 +4828,7 @@ void WAttribute::set_min_value(Tango::DevFloat &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4644,7 +4836,7 @@ void WAttribute::set_min_value(Tango::DevFloat &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4660,21 +4852,21 @@ void WAttribute::set_min_value(Tango::DevUShort &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUShort",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	unsigned short old_min = min_value.ush;
+ 	min_value.ush = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4691,7 +4883,7 @@ void WAttribute::set_min_value(Tango::DevUShort &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4699,7 +4891,7 @@ void WAttribute::set_min_value(Tango::DevUShort &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4716,21 +4908,21 @@ void WAttribute::set_min_value(Tango::DevUChar &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevUChar",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	unsigned char old_min = min_value.uch;
+ 	min_value.uch = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4771,21 +4963,21 @@ void WAttribute::set_min_value(Tango::DevULong &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevULong",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	DevULong old_min = min_value.ulg;
+ 	min_value.ulg = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4802,7 +4994,7 @@ void WAttribute::set_min_value(Tango::DevULong &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4810,7 +5002,7 @@ void WAttribute::set_min_value(Tango::DevULong &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+@@ -4826,21 +5018,21 @@ void WAttribute::set_min_value(Tango::DevULong64 &new_val)
+ 				      (const char *)"Incompatible attribute type, expected type is : Tango::DevULong64",
+ 				      (const char *)"WAttribute::set_min_value()");
+ 	}
+-	
++
+ //
+ // Get the monitor protecting device att config
+ //
+ 
+ 	TangoMonitor &mon1 = get_att_device()->get_att_conf_monitor();
+ 	AutoTangoMonitor sync1(&mon1);
+-						
++
+ //
+ // Store the new value locally
+ //
+ 
+ 	DevULong64 old_min = min_value.ulg64;
+ 	min_value.ulg64 = new_val;
+-	
++
+ //
+ // Then, update database
+ //
+@@ -4857,7 +5049,7 @@ void WAttribute::set_min_value(Tango::DevULong64 &new_val)
+ 			throw;
+ 		}
+ 	}
+-	
++
+ //
+ // Store new value as a string
+ //
+@@ -4865,7 +5057,7 @@ void WAttribute::set_min_value(Tango::DevULong64 &new_val)
+ 	TangoSys_MemStream str;
+ 	str << new_val;
+ 	min_value_str = str.str();
+-	
++
+ //
+ // Push a att conf event
+ //
+-- 
diff --git a/debian/patches/series b/debian/patches/series
index 650ac33..0090d73 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,3 +6,4 @@
 0006-feature-forwarded-upstream-pkg-config-small-fixes.patch
 0007-upstream-fix-tango-db-start-during-init.patch
 0008-feature-add-jpegmmx-option-to-configure-script.patch
+0009-upstream-fix-bug3339975.patch

-- 
TANGO distributed control system.



More information about the debian-science-commits mailing list