← Back to team overview

yade-dev team mailing list archive

[svn] r1460 - eudoxos

 

------------------------------------------------------------------------
r1460 | eudoxos | 2008-08-11 14:02:07 +0200 (pon, 11 sie 2008) | 4 lines
Changed paths:
   M /trunk/SConstruct
   M /trunk/lib/serialization/FundamentalHandler.tpp

1. Permit non-zero integeres as bool - sometimes the serializaer confuses bool with int; give warning to console about that.
2. the -opt profile (and optimize=1) generates instruction set for the current machine (gcc: -march=native) which means that the code may not run on different processor (e.g. core2 code will not run on Pentium IV). Please let me know if this is problem for someone.


------------------------------------------------------------------------
Index: lib/serialization/FundamentalHandler.tpp
===================================================================
--- lib/serialization/FundamentalHandler.tpp	(revision 1459)
+++ lib/serialization/FundamentalHandler.tpp	(revision 1460)
@@ -99,8 +99,7 @@
 		try{
 			*tmp = lexical_cast<Type>(*tmpStr);
 		} catch(boost::bad_lexical_cast& e){
-			if(a.type()==typeid(bool*) && atoi(tmpStr->c_str())!=0) { *tmp=lexical_cast<Type>("true"); cerr<<"Offensive bool value `"<<*tmpStr<<"' encountered.!!"<<endl; }
-			else throw e;
+			if(typeid(tmp)==typeid(bool*) && atoi(tmpStr->c_str())!=0) { cerr<<"warning: offensive bool value `"<<*tmpStr<<"' encountered (interpreted as true)."<<endl; *tmp=lexical_cast<Type>("1"); /* cerr<<"New value: "<<lexical_cast<string>(*tmp)<<endl; cerr<<"Atoi returns "<<atoi(tmpStr->c_str())<<", bool !=0 is "<<(atoi(tmpStr->c_str())!=0)<<endl;*/ }
 		}
 	}
 	else if (a.type()==typeid(string*)) // serialization - writing to string from some Type
@@ -112,33 +111,6 @@
 	else
 		cerr<<"lexical_cast(XML): (de)serialization format mismatch"<<endl;
 	}
-	else if(FormatChecker::format==FormatChecker::BIN){
-	// Binary serialization
-	if (a.type()==typeid(const vector<unsigned char>*)) // from binary stream to Type
-	{
-		const vector<unsigned char>* tmpBin = any_cast< const vector<unsigned char>* >(a);
-		Type * tmp = any_cast<Type*>(ac.getAddress());
-		BOOST_STATIC_ASSERT((boost::is_POD<Type>::value));
-		std::vector<unsigned char>::const_iterator ptr = (*tmpBin).begin();
-		std::vector<unsigned char>::const_iterator end = (*tmpBin).end();
-		if(sizeof(Type) != (*tmpBin).size())
-			throw HandlerError(SerializationExceptions::LexicalCopyBinError);
-		unsigned char *ptr2 = reinterpret_cast<unsigned char *>(tmp);
-		std::copy(ptr,end,ptr2);
-	}
-	else if (a.type()==typeid(vector<unsigned char>*)) // from Type to binary stream
-	{ CHK_BIN();
-		vector<unsigned char>* tmpBin = any_cast< vector<unsigned char>* >(a);
-		Type * tmp = any_cast<Type*>(ac.getAddress());
-		(*tmpBin).clear();
-		const unsigned char* ptr = reinterpret_cast<const unsigned char*>(tmp);
-		const unsigned char* end = ptr + sizeof(Type);
-		(*tmpBin).resize(sizeof(Type));
-		std::copy(ptr, end, (*tmpBin).begin() );
-	}
-	else
-		cerr<<"lexical_cast(BIN): (de)serialization format mismatch"<<endl;
-	}
 	else // never reached
 		throw HandlerError(SerializationExceptions::LexicalCopyError);
 }
Index: SConstruct
===================================================================
--- SConstruct	(revision 1459)
+++ SConstruct	(revision 1460)
@@ -383,7 +383,7 @@
 else: env.Append(CXXFLAGS='-O2')
 if env['openmp']: env.Append(CXXFLAGS='-fopenmp',LIBS='gomp')
 if env['optimize']:
-	env.Append(CXXFLAGS=Split('-O3 -ffast-math'),
+	env.Append(CXXFLAGS=Split('-O3 -ffast-math -march=native'),
 		CPPDEFINES=[('YADE_CAST','static_cast'),('YADE_PTR_CAST','static_pointer_cast'),'NDEBUG'])
 	# NDEBUG is used in /usr/include/assert.h: when defined, asserts() are no-ops