Author: eudoxos
Date: 2008-12-08 10:17:00 +0100 (Mon, 08 Dec 2008)
New Revision: 1594

Modified:
   trunk/core/Body.cpp
   trunk/core/Body.hpp
   trunk/core/BodyContainer.cpp
   trunk/core/BodyContainer.hpp
   trunk/core/BoundingVolume.cpp
   trunk/core/BoundingVolume.hpp
   trunk/core/DeusExMachina.cpp
   trunk/core/DeusExMachina.hpp
   trunk/core/DisplayParameters.hpp
   trunk/core/Engine.hpp
   trunk/core/EngineUnit.hpp
   trunk/core/EngineUnit1D.hpp
   trunk/core/EngineUnit2D.hpp
   trunk/core/FileGenerator.cpp
   trunk/core/FileGenerator.hpp
   trunk/core/FrontEnd.hpp
   trunk/core/GeometricalModel.cpp
   trunk/core/GeometricalModel.hpp
   trunk/core/InteractingGeometry.cpp
   trunk/core/InteractingGeometry.hpp
   trunk/core/Interaction.cpp
   trunk/core/Interaction.hpp
   trunk/core/InteractionContainer.cpp
   trunk/core/InteractionContainer.hpp
   trunk/core/InteractionGeometry.hpp
   trunk/core/MetaBody.cpp
   trunk/core/MetaBody.hpp
   trunk/core/MetaEngine.cpp
   trunk/core/MetaEngine.hpp
   trunk/core/MetaEngine1D.hpp
   trunk/core/MetaEngine2D.hpp
   trunk/core/NullGUI.hpp
   trunk/core/PhysicalAction.hpp
   trunk/core/PhysicalActionContainer.cpp
   trunk/core/PhysicalActionContainer.hpp
   trunk/core/PhysicalParameters.hpp
   trunk/core/Preferences.cpp
   trunk/core/Preferences.hpp
   trunk/core/RenderingEngine.hpp
   trunk/core/TimeStepper.hpp
   trunk/extra/Brefcom.hpp
   trunk/extra/usct/UniaxialStrainControlledTest.hpp
   trunk/lib/serialization/Serializable.hpp
   trunk/pkg/common/Engine/DeusExMachina/Se3Interpolator.hpp
Log:
1. Modify REGISTER_ATTRIBUTES macro so that it work with or without base class 
given. Change all headers in core to use that. It should help us if we ever 
make the transition to boost::serialization.
2. User REGISTER_CLASS_AND_BASE instead of REGISTER_CLASS_NAME and 
REGISTER_BASE_CLASS in core and at a few other places.



Modified: trunk/core/Body.cpp
===================================================================
--- trunk/core/Body.cpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/Body.cpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -43,17 +43,3 @@
 {
 }
 
-
-void Body::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(id);
-       REGISTER_ATTRIBUTE(groupMask);
-       REGISTER_ATTRIBUTE(isDynamic); // FIXME? : only used for interaction : 
no collision between 2 non dynamic objects
-
-       REGISTER_ATTRIBUTE(physicalParameters);
-       REGISTER_ATTRIBUTE(geometricalModel);
-       REGISTER_ATTRIBUTE(interactingGeometry);
-       REGISTER_ATTRIBUTE(boundingVolume);
-       REGISTER_ATTRIBUTE(clumpId);
-}
-

Modified: trunk/core/Body.hpp
===================================================================
--- trunk/core/Body.hpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/Body.hpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -89,8 +89,17 @@
 
                // Serialization
        protected:
-               void registerAttributes();
-       REGISTER_CLASS_NAME(Body);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+               REGISTER_ATTRIBUTES(/*no base*/,
+                       (id)
+                       (groupMask)
+                       (isDynamic) // FIXME? : only used for interaction : no 
collision between 2 non dynamic objects
+                       (physicalParameters)
+                       (geometricalModel)
+                       (interactingGeometry)
+                       (boundingVolume)
+                       (clumpId)
+               );
+
+       REGISTER_CLASS_AND_BASE(Body,Serializable);
 };
 REGISTER_SERIALIZABLE(Body);

Modified: trunk/core/BodyContainer.cpp
===================================================================
--- trunk/core/BodyContainer.cpp        2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/BodyContainer.cpp        2008-12-08 09:17:00 UTC (rev 1594)
@@ -23,12 +23,6 @@
 }
 
 
-void BodyContainer::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(body);
-}
-
-
 void BodyContainer::preProcessAttributes(bool deserializing)
 {
        if(deserializing)

Modified: trunk/core/BodyContainer.hpp
===================================================================
--- trunk/core/BodyContainer.hpp        2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/BodyContainer.hpp        2008-12-08 09:17:00 UTC (rev 1594)
@@ -99,14 +99,13 @@
        protected :
                void setId(shared_ptr<Body>& , unsigned int);
 
-       REGISTER_CLASS_NAME(BodyContainer);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_CLASS_AND_BASE(BodyContainer,Serializable);
 
        // local storage for uniform serialization of all possible container 
concrete implementations.
        private :
                vector<shared_ptr<Body> > body; 
        public :
-               virtual void registerAttributes();
+               REGISTER_ATTRIBUTES(/*no base*/,(body));
        protected :
                virtual void preProcessAttributes(bool deserializing);
                virtual void postProcessAttributes(bool deserializing);

Modified: trunk/core/BoundingVolume.cpp
===================================================================
--- trunk/core/BoundingVolume.cpp       2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/BoundingVolume.cpp       2008-12-08 09:17:00 UTC (rev 1594)
@@ -9,8 +9,4 @@
 #include "BoundingVolume.hpp"
 
 
-void BoundingVolume::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(diffuseColor);
-}
 

Modified: trunk/core/BoundingVolume.hpp
===================================================================
--- trunk/core/BoundingVolume.hpp       2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/BoundingVolume.hpp       2008-12-08 09:17:00 UTC (rev 1594)
@@ -26,9 +26,8 @@
                                ,max;                   /// Maximum of the 
bounding volume
                BoundingVolume(): diffuseColor(Vector3r(1,1,1)), 
min(Vector3r(0,0,0)), max(Vector3r(0,0,0)) {}
 
-               void registerAttributes();
-       REGISTER_CLASS_NAME(BoundingVolume);
-       REGISTER_BASE_CLASS_NAME(Serializable Indexable);
+       REGISTER_ATTRIBUTES(/*no base*/,(diffuseColor));
+       REGISTER_CLASS_AND_BASE(BoundingVolume,Serializable Indexable);
        REGISTER_INDEX_COUNTER(BoundingVolume);
 };
 REGISTER_SERIALIZABLE(BoundingVolume);

Modified: trunk/core/DeusExMachina.cpp
===================================================================
--- trunk/core/DeusExMachina.cpp        2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/DeusExMachina.cpp        2008-12-08 09:17:00 UTC (rev 1594)
@@ -9,14 +9,8 @@
 #include "DeusExMachina.hpp"
 
 DeusExMachina::DeusExMachina() : Engine() {
-       subscribedBodies.resize(0);
+       subscribedBodies.resize(0); // what is this good for?
 }
-
-void DeusExMachina::registerAttributes() {
-       Engine::registerAttributes();
-       REGISTER_ATTRIBUTE(subscribedBodies);
-}
-
 void DeusExMachina::action(MetaBody* b) {
        this->applyCondition(b);
 }

Modified: trunk/core/DeusExMachina.hpp
===================================================================
--- trunk/core/DeusExMachina.hpp        2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/DeusExMachina.hpp        2008-12-08 09:17:00 UTC (rev 1594)
@@ -31,9 +31,8 @@
                virtual void applyCondition(MetaBody*) { throw; };
        //      virtual bool isActivated();
        protected :
-               void registerAttributes();
-       REGISTER_CLASS_NAME(DeusExMachina);
-       REGISTER_BASE_CLASS_NAME(Engine);
+       REGISTER_ATTRIBUTES(Engine,(subscribedBodies));
+       REGISTER_CLASS_AND_BASE(DeusExMachina,Engine);
 };
 
 REGISTER_SERIALIZABLE(DeusExMachina);

Modified: trunk/core/DisplayParameters.hpp
===================================================================
--- trunk/core/DisplayParameters.hpp    2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/DisplayParameters.hpp    2008-12-08 09:17:00 UTC (rev 1594)
@@ -21,8 +21,7 @@
                void setValue(std::string displayType, std::string 
value){assert(values.size()==displayTypes.size()); vector<string>::iterator 
I=std::find(displayTypes.begin(),displayTypes.end(),displayType); 
if(I==displayTypes.end()){displayTypes.push_back(displayType); 
values.push_back(value);} else 
{values[std::distance(displayTypes.begin(),I)]=value;};}
        DisplayParameters(){}
        virtual ~DisplayParameters(){}
-       virtual void registerAttributes(){ REGISTER_ATTRIBUTE(displayTypes); 
REGISTER_ATTRIBUTE(values); }
-       REGISTER_CLASS_NAME(DisplayParameters);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_ATTRIBUTES(/*no base*/,(displayTypes)(values));
+       REGISTER_CLASS_AND_BASE(DisplayParameters,Serializable);
 };
 REGISTER_SERIALIZABLE(DisplayParameters);

Modified: trunk/core/Engine.hpp
===================================================================
--- trunk/core/Engine.hpp       2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/Engine.hpp       2008-12-08 09:17:00 UTC (rev 1594)
@@ -27,11 +27,9 @@
                virtual void action(MetaBody*) { throw; };
                /* returns all BodyExternalVariable's (Bex; formerly 
PhysicalActions) that this engine needs */
                virtual list<string> getNeededBex(){return list<string>();}
-               virtual void registerAttributes(){REGISTER_ATTRIBUTE(label);}
+       REGISTER_ATTRIBUTES(/*no base*/,(label));
+       REGISTER_CLASS_AND_BASE(Engine,Serializable);
 
-       REGISTER_CLASS_NAME(Engine);
-       REGISTER_BASE_CLASS_NAME(Serializable);
-
 };
 
 REGISTER_SERIALIZABLE(Engine);

Modified: trunk/core/EngineUnit.hpp
===================================================================
--- trunk/core/EngineUnit.hpp   2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/EngineUnit.hpp   2008-12-08 09:17:00 UTC (rev 1594)
@@ -17,8 +17,7 @@
 {
        public: virtual vector<std::string> getFunctorTypes(){throw;}
                virtual list<string> getNeededBex(){return list<string>();}
-       REGISTER_CLASS_NAME(EngineUnit);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_CLASS_AND_BASE(EngineUnit,Serializable);
 };
 
 REGISTER_SERIALIZABLE(EngineUnit);

Modified: trunk/core/EngineUnit1D.hpp
===================================================================
--- trunk/core/EngineUnit1D.hpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/EngineUnit1D.hpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -26,8 +26,7 @@
        public:
                virtual std::string get1DFunctorType1(void){throw 
runtime_error("Class "+this->getClassName()+" did not use FUNCTOR1D to declare 
its argument type?"); }
                virtual vector<string> getFunctorTypes(void){vector<string> 
ret; ret.push_back(get1DFunctorType1()); return ret;};
-       REGISTER_CLASS_NAME(EngineUnit1D);
-       REGISTER_BASE_CLASS_NAME(EngineUnit FunctorWrapper);
+       REGISTER_CLASS_AND_BASE(EngineUnit1D,EngineUnit FunctorWrapper);
 };
 
 #endif // ENGINEUNIT1D_HPP

Modified: trunk/core/EngineUnit2D.hpp
===================================================================
--- trunk/core/EngineUnit2D.hpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/EngineUnit2D.hpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -28,8 +28,7 @@
                virtual std::string get2DFunctorType1(void){throw 
runtime_error("Class "+this->getClassName()+" did not use FUNCTOR2D to declare 
its argument types?");}
                virtual std::string get2DFunctorType2(void){throw 
runtime_error("Class "+this->getClassName()+" did not use FUNCTOR2D to declare 
its argument types?");}
                virtual vector<string> getFunctorTypes(){vector<string> ret; 
ret.push_back(get2DFunctorType1()); ret.push_back(get2DFunctorType2()); return 
ret;};
-       REGISTER_CLASS_NAME(EngineUnit2D);
-       REGISTER_BASE_CLASS_NAME(EngineUnit FunctorWrapper);
+       REGISTER_CLASS_AND_BASE(EngineUnit2D,EngineUnit FunctorWrapper);
 };
 
 #endif // ENGINEUNIT2D_HPP

Modified: trunk/core/FileGenerator.cpp
===================================================================
--- trunk/core/FileGenerator.cpp        2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/FileGenerator.cpp        2008-12-08 09:17:00 UTC (rev 1594)
@@ -36,19 +36,6 @@
 }
 
 
-void FileGenerator::postProcessAttributes(bool) 
-{
-
-}
-
-
-void FileGenerator::registerAttributes() 
-{      
-       REGISTER_ATTRIBUTE(outputFileName);
-       REGISTER_ATTRIBUTE(serializationDynlib);
-}
-
-
 bool FileGenerator::generate() 
 {
        message="FileGenerator (base class) generates nothing.";

Modified: trunk/core/FileGenerator.hpp
===================================================================
--- trunk/core/FileGenerator.hpp        2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/FileGenerator.hpp        2008-12-08 09:17:00 UTC (rev 1594)
@@ -40,15 +40,13 @@
                virtual void singleAction();
 
        protected :
-               //! Returns whether the generation was successful; message for 
user is in FileGenerator::message
-               virtual bool generate();
+       //! Returns whether the generation was successful; message for user is 
in FileGenerator::message
+       virtual bool generate();
+       virtual void postProcessAttributes(){};
 
-               virtual void postProcessAttributes(bool);
-               virtual void registerAttributes();
-
+       REGISTER_ATTRIBUTES(/*no base*/,(outputFileName)(serializationDynlib));
        DECLARE_LOGGER;
-       REGISTER_CLASS_NAME(FileGenerator);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_CLASS_AND_BASE(FileGenerator,Serializable);
 };
 
 REGISTER_SERIALIZABLE(FileGenerator);

Modified: trunk/core/FrontEnd.hpp
===================================================================
--- trunk/core/FrontEnd.hpp     2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/FrontEnd.hpp     2008-12-08 09:17:00 UTC (rev 1594)
@@ -22,8 +22,7 @@
 
                virtual int run(int , char * []) { return -1;};
 
-       REGISTER_CLASS_NAME(FrontEnd);
-       REGISTER_BASE_CLASS_NAME(Factorable);
+       REGISTER_CLASS_AND_BASE(FrontEnd,Factorable);
 };
 
 REGISTER_FACTORABLE(FrontEnd);

Modified: trunk/core/GeometricalModel.cpp
===================================================================
--- trunk/core/GeometricalModel.cpp     2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/GeometricalModel.cpp     2008-12-08 09:17:00 UTC (rev 1594)
@@ -10,11 +10,4 @@
 
 #include "GeometricalModel.hpp"
 
-void GeometricalModel::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(diffuseColor);
-       REGISTER_ATTRIBUTE(wire);
-       REGISTER_ATTRIBUTE(visible);
-       REGISTER_ATTRIBUTE(shadowCaster);
-}
 

Modified: trunk/core/GeometricalModel.hpp
===================================================================
--- trunk/core/GeometricalModel.hpp     2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/GeometricalModel.hpp     2008-12-08 09:17:00 UTC (rev 1594)
@@ -28,11 +28,8 @@
 
                GeometricalModel(): 
visible(true),wire(false),shadowCaster(false),diffuseColor(Vector3r(1,1,1)){}
 
-       protected : 
-               void registerAttributes();
-
-       REGISTER_CLASS_NAME(GeometricalModel);
-       REGISTER_BASE_CLASS_NAME(Serializable Indexable);
+       REGISTER_ATTRIBUTES(/*no 
base*/,(visible)(wire)(shadowCaster)(diffuseColor));
+       REGISTER_CLASS_AND_BASE(GeometricalModel,Serializable Indexable);
        REGISTER_INDEX_COUNTER(GeometricalModel);
 };
 

Modified: trunk/core/InteractingGeometry.cpp
===================================================================
--- trunk/core/InteractingGeometry.cpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/InteractingGeometry.cpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -10,7 +10,3 @@
 
 #include "InteractingGeometry.hpp"
 
-void InteractingGeometry::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(diffuseColor);
-}

Modified: trunk/core/InteractingGeometry.hpp
===================================================================
--- trunk/core/InteractingGeometry.hpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/InteractingGeometry.hpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -30,11 +30,8 @@
                                        // bool wire; even though 
GeometricalModel has bool wire ?
        
 /// Serialization
-       protected :
-               void registerAttributes();
-       REGISTER_CLASS_NAME(InteractingGeometry);
-       REGISTER_BASE_CLASS_NAME(Serializable Indexable);
-       
+       REGISTER_ATTRIBUTES(/*no base*/,(diffuseColor));
+       REGISTER_CLASS_AND_BASE(InteractingGeometry,Serializable Indexable);
 /// Indexable
        REGISTER_INDEX_COUNTER(InteractingGeometry);
 };

Modified: trunk/core/Interaction.cpp
===================================================================
--- trunk/core/Interaction.cpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/Interaction.cpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -32,16 +32,6 @@
 }
 
 
-void Interaction::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(id1);
-       REGISTER_ATTRIBUTE(id2);
-       REGISTER_ATTRIBUTE(isNew);
-       REGISTER_ATTRIBUTE(isReal);
-       REGISTER_ATTRIBUTE(interactionGeometry);
-       REGISTER_ATTRIBUTE(interactionPhysics);
-}
-
 void Interaction::swapOrder(){
        if(interactionGeometry || interactionPhysics || !isNew){
                throw std::logic_error("Bodies in interaction cannot be swapped 
if !isNew, have interactionGeometry or have interactionPhysics.");

Modified: trunk/core/Interaction.hpp
===================================================================
--- trunk/core/Interaction.hpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/Interaction.hpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -46,10 +46,15 @@
                        bool maskAnyOK(int mask, MetaBody* 
rootBody=NULL){return (mask==0) || Body::byId(id1,rootBody)->maskOK(mask) || 
Body::byId(id2,rootBody)->maskOK(mask);}
                #endif
 
-       protected :
-               void registerAttributes();
-       REGISTER_CLASS_NAME(Interaction);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_ATTRIBUTES(/*no base*/,
+               (id1)
+               (id2)
+               (isNew)
+               (isReal)
+               (interactionGeometry)
+               (interactionPhysics)
+       );
+       REGISTER_CLASS_AND_BASE(Interaction,Serializable);
 };
 
 REGISTER_SERIALIZABLE(Interaction);

Modified: trunk/core/InteractionContainer.cpp
===================================================================
--- trunk/core/InteractionContainer.cpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/InteractionContainer.cpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -12,12 +12,7 @@
 #include "Interaction.hpp"
 
 
-void InteractionContainer::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(interaction);
-}
 
-
 void InteractionContainer::preProcessAttributes(bool deserializing)
 {
        if(deserializing)

Modified: trunk/core/InteractionContainer.hpp
===================================================================
--- trunk/core/InteractionContainer.hpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/InteractionContainer.hpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -105,11 +105,10 @@
                vector<shared_ptr<Interaction> > interaction;
 
        protected :
-               virtual void registerAttributes();
                virtual void preProcessAttributes(bool deserializing);
                virtual void postProcessAttributes(bool deserializing);
-       REGISTER_CLASS_NAME(InteractionContainer);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_ATTRIBUTES(/*no base*/,(interaction));
+       REGISTER_CLASS_AND_BASE(InteractionContainer,Serializable);
 };
 
 REGISTER_SERIALIZABLE(InteractionContainer);

Modified: trunk/core/InteractionGeometry.hpp
===================================================================
--- trunk/core/InteractionGeometry.hpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/InteractionGeometry.hpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -17,7 +17,6 @@
 {
        REGISTER_CLASS_NAME(InteractionGeometry);
        REGISTER_BASE_CLASS_NAME(Serializable Indexable);
-       
        REGISTER_INDEX_COUNTER(InteractionGeometry);
 };
 

Modified: trunk/core/MetaBody.cpp
===================================================================
--- trunk/core/MetaBody.cpp     2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/MetaBody.cpp     2008-12-08 09:17:00 UTC (rev 1594)
@@ -68,25 +68,7 @@
 }
 
 
-void MetaBody::registerAttributes()
-{
-       Body::registerAttributes();
-       REGISTER_ATTRIBUTE(tags);
-       REGISTER_ATTRIBUTE(engines);
-       REGISTER_ATTRIBUTE(initializers);
-       REGISTER_ATTRIBUTE(bodies);
-       REGISTER_ATTRIBUTE(transientInteractions);
-       REGISTER_ATTRIBUTE(persistentInteractions);
-       REGISTER_ATTRIBUTE(physicalActions); // FIXME - needed or not ? - 
Olivier : yes it is needed if there is no default initialization into 
constructor
-       REGISTER_ATTRIBUTE(miscParams);
-       REGISTER_ATTRIBUTE(dispParams);
-       REGISTER_ATTRIBUTE(dt);
-       REGISTER_ATTRIBUTE(currentIteration);
-       REGISTER_ATTRIBUTE(simulationTime);
-       REGISTER_ATTRIBUTE(stopAtIteration);
-}
 
-
 void MetaBody::moveToNextTimeStep()
 {
        if(needsInitializers){

Modified: trunk/core/MetaBody.hpp
===================================================================
--- trunk/core/MetaBody.hpp     2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/MetaBody.hpp     2008-12-08 09:17:00 UTC (rev 1594)
@@ -50,9 +50,22 @@
 /// Serialization
        protected :
                virtual void postProcessAttributes(bool deserializing);
-               virtual void registerAttributes();
-       REGISTER_CLASS_NAME(MetaBody);
-       REGISTER_BASE_CLASS_NAME(Body);
+       REGISTER_ATTRIBUTES(Body,
+               (tags)
+               (engines)
+               (initializers)
+               (bodies)
+               (transientInteractions)
+               (persistentInteractions)
+               (physicalActions) // FIXME - needed or not ? - Olivier : yes it 
is needed if there is no default initialization into constructor
+               (miscParams)
+               (dispParams)
+               (dt)
+               (currentIteration)
+               (simulationTime)
+               (stopAtIteration)
+       );
+       REGISTER_CLASS_AND_BASE(MetaBody,Body);
 };
 
 REGISTER_SERIALIZABLE(MetaBody);

Modified: trunk/core/MetaEngine.cpp
===================================================================
--- trunk/core/MetaEngine.cpp   2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/MetaEngine.cpp   2008-12-08 09:17:00 UTC (rev 1594)
@@ -41,14 +41,7 @@
 }
 
 
-void MetaEngine::registerAttributes()
-{
-       Engine::registerAttributes();
-       REGISTER_ATTRIBUTE(functorNames);
-       REGISTER_ATTRIBUTE(functorArguments);
-}
 
-
 vector<vector<string> >& MetaEngine::getFunctorNames()
 {
        return functorNames;

Modified: trunk/core/MetaEngine.hpp
===================================================================
--- trunk/core/MetaEngine.hpp   2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/MetaEngine.hpp   2008-12-08 09:17:00 UTC (rev 1594)
@@ -46,11 +46,10 @@
                virtual int getDimension() { throw; };
                virtual string getBaseClassType(unsigned int ) { throw; };
 
-       protected :
-               virtual void registerAttributes();
+       protected:
                virtual void postProcessAttributes(bool deserializing);
-       REGISTER_CLASS_NAME(MetaEngine);
-       REGISTER_BASE_CLASS_NAME(Engine);
+       REGISTER_ATTRIBUTES(Engine,(functorNames)(functorArguments));
+       REGISTER_CLASS_AND_BASE(MetaEngine,Engine);
 };
 
 REGISTER_SERIALIZABLE(MetaEngine);

Modified: trunk/core/MetaEngine1D.hpp
===================================================================
--- trunk/core/MetaEngine1D.hpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/MetaEngine1D.hpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -80,10 +80,6 @@
                }
 
        protected :
-               void registerAttributes()
-               {
-                       MetaEngine::registerAttributes();
-               }
                void postProcessAttributes(bool deserializing)
                {
                        MetaEngine::postProcessAttributes(deserializing);
@@ -93,8 +89,8 @@
                                        
add1DEntry(functorNames[i][0],functorNames[i][1],static_pointer_cast<EngineUnitType>(findFunctorArguments(functorNames[i][1])));
        
                        }
                }
-       REGISTER_CLASS_NAME(MetaEngine1D);
-       REGISTER_BASE_CLASS_NAME(MetaEngine DynLibDispatcher);
+       REGISTER_ATTRIBUTES(MetaEngine,);
+       REGISTER_CLASS_AND_BASE(MetaEngine1D,MetaEngine DynLibDispatcher);
 };
 
 #endif // METADISPATCHINGENGINE1D_HPP

Modified: trunk/core/MetaEngine2D.hpp
===================================================================
--- trunk/core/MetaEngine2D.hpp 2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/MetaEngine2D.hpp 2008-12-08 09:17:00 UTC (rev 1594)
@@ -99,14 +99,9 @@
                                        
add2DEntry(functorNames[i][0],functorNames[i][1],functorNames[i][2],static_pointer_cast<EngineUnitType>(findFunctorArguments(functorNames[i][2])));
                        }
                }
+       REGISTER_ATTRIBUTES(MetaEngine,);
+       REGISTER_CLASS_AND_BASE(MetaEngine2D,MetaEngine DynLibDispatcher);
 
-               void registerAttributes()
-               {
-                       MetaEngine::registerAttributes();
-               }
-       REGISTER_CLASS_NAME(MetaEngine2D);
-       REGISTER_BASE_CLASS_NAME(MetaEngine DynLibDispatcher);
-
 };
 
 //REGISTER_SERIALIZABLE(MetaEngine2D);

Modified: trunk/core/NullGUI.hpp
===================================================================
--- trunk/core/NullGUI.hpp      2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/NullGUI.hpp      2008-12-08 09:17:00 UTC (rev 1594)
@@ -36,8 +36,7 @@
                virtual ~NullGUI ();
                virtual int run(int argc, char *argv[]);
        
-       REGISTER_CLASS_NAME(NullGUI);
-       REGISTER_BASE_CLASS_NAME(FrontEnd);
+       REGISTER_CLASS_AND_BASE(NullGUI,FrontEnd);
 };
 
 REGISTER_FACTORABLE(NullGUI);

Modified: trunk/core/PhysicalAction.hpp
===================================================================
--- trunk/core/PhysicalAction.hpp       2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/PhysicalAction.hpp       2008-12-08 09:17:00 UTC (rev 1594)
@@ -28,12 +28,8 @@
                virtual void reset()                            {throw;};
                virtual shared_ptr<PhysicalAction> clone()      {throw;};
        
-/// Serialization                                                              
                ///
-       REGISTER_CLASS_NAME(PhysicalAction);
-
-/// Indexable                                                                  
                ///
        REGISTER_INDEX_COUNTER(PhysicalAction);
-       REGISTER_BASE_CLASS_NAME(Serializable Indexable);
+       REGISTER_CLASS_AND_BASE(PhysicalAction,Serializable Indexable);
 };
 
 REGISTER_SERIALIZABLE(PhysicalAction);

Modified: trunk/core/PhysicalActionContainer.cpp
===================================================================
--- trunk/core/PhysicalActionContainer.cpp      2008-12-03 10:04:10 UTC (rev 
1593)
+++ trunk/core/PhysicalActionContainer.cpp      2008-12-08 09:17:00 UTC (rev 
1594)
@@ -23,9 +23,3 @@
 
 }
 
-
-void PhysicalActionContainer::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(action);
-};
-

Modified: trunk/core/PhysicalActionContainer.hpp
===================================================================
--- trunk/core/PhysicalActionContainer.hpp      2008-12-03 10:04:10 UTC (rev 
1593)
+++ trunk/core/PhysicalActionContainer.hpp      2008-12-08 09:17:00 UTC (rev 
1594)
@@ -104,11 +104,8 @@
                virtual PhysicalActionContainer::iterator begin()               
        {throw;};
                virtual PhysicalActionContainer::iterator end()                 
{throw;};
 
-/// Serialization                                                              
                ///
-       protected :
-               virtual void registerAttributes();
-       REGISTER_CLASS_NAME(PhysicalActionContainer);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_ATTRIBUTES(/*no base*/,(action));
+       REGISTER_CLASS_AND_BASE(PhysicalActionContainer,Serializable);
 
        // local storage for uniform serialization of all possible container 
concrete implementations.
        private :

Modified: trunk/core/PhysicalParameters.hpp
===================================================================
--- trunk/core/PhysicalParameters.hpp   2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/PhysicalParameters.hpp   2008-12-08 09:17:00 UTC (rev 1594)
@@ -24,14 +24,9 @@
                static const unsigned DOF_XYZ=DOF_X|DOF_Y|DOF_Z; //! shorthand 
for all displacements blocked
                static const unsigned DOF_RXRYRZ=DOF_RX|DOF_RY|DOF_RZ; //! 
shorthand for all rotations blocked
                static unsigned axisDOF(int axis, bool 
rotationalDOF=false){return 1<<(axis+(rotationalDOF?3:0));} //! Return DOF_* 
constant for given axis∈{0,1,2} and rotationalDOF∈{false(default),true}; e.g. 
axisDOF(0,true)==DOF_RX
-       protected :
-               void registerAttributes(){
-                       REGISTER_ATTRIBUTE(se3);
-                       REGISTER_ATTRIBUTE(refSe3);
-                       REGISTER_ATTRIBUTE(blockedDOFs);
-               }
-       REGISTER_CLASS_NAME(PhysicalParameters);
-       REGISTER_BASE_CLASS_NAME(Serializable Indexable);
+
+       REGISTER_ATTRIBUTES(/*no base*/,(se3)(refSe3)(blockedDOFs));
+       REGISTER_CLASS_AND_BASE(PhysicalParameters,Serializable Indexable);
        REGISTER_INDEX_COUNTER(PhysicalParameters);
 };
 

Modified: trunk/core/Preferences.cpp
===================================================================
--- trunk/core/Preferences.cpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/Preferences.cpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -14,11 +14,3 @@
        version = 1;
 }
 
-
-void Preferences::registerAttributes()
-{
-       REGISTER_ATTRIBUTE(version);
-       REGISTER_ATTRIBUTE(dynlibDirectories);
-       REGISTER_ATTRIBUTE(defaultGUILibName);
-}
-

Modified: trunk/core/Preferences.hpp
===================================================================
--- trunk/core/Preferences.hpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/Preferences.hpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -25,11 +25,8 @@
                string           defaultGUILibName;
                Preferences ();
 
-/// Serialization                                                              
                ///
-       protected :
-               void registerAttributes();
-       REGISTER_CLASS_NAME(Preferences);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_ATTRIBUTES(,(version)(dynlibDirectories)(defaultGUILibName));
+       REGISTER_CLASS_AND_BASE(Preferences,Serializable);
 };
 
 REGISTER_SERIALIZABLE(Preferences);

Modified: trunk/core/RenderingEngine.hpp
===================================================================
--- trunk/core/RenderingEngine.hpp      2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/RenderingEngine.hpp      2008-12-08 09:17:00 UTC (rev 1594)
@@ -22,8 +22,7 @@
                virtual void renderWithNames(const shared_ptr<MetaBody>& ) 
{throw;};
                virtual void init() {throw;};
 
-       REGISTER_CLASS_NAME(RenderingEngine);
-       REGISTER_BASE_CLASS_NAME(Serializable);
+       REGISTER_CLASS_AND_BASE(RenderingEngine,Serializable);
 };
 
 REGISTER_SERIALIZABLE(RenderingEngine);

Modified: trunk/core/TimeStepper.hpp
===================================================================
--- trunk/core/TimeStepper.hpp  2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/core/TimeStepper.hpp  2008-12-08 09:17:00 UTC (rev 1594)
@@ -30,8 +30,7 @@
 
        protected :
                virtual void registerAttributes();
-       REGISTER_CLASS_NAME(TimeStepper);
-       REGISTER_BASE_CLASS_NAME(StandAloneEngine);
+       REGISTER_CLASS_AND_BASE(TimeStepper,StandAloneEngine);
 };
 
 REGISTER_SERIALIZABLE(TimeStepper);

Modified: trunk/extra/Brefcom.hpp
===================================================================
--- trunk/extra/Brefcom.hpp     2008-12-03 10:04:10 UTC (rev 1593)
+++ trunk/extra/Brefcom.hpp     2008-12-08 09:17:00 UTC (rev 1594)
@@ -29,10 +29,12 @@
                void compute(MetaBody* rb, bool useMax=false);
                virtual void action(MetaBody* rb){compute(rb,useMaxForce);}
                BrefcomGlobalCharacteristics(){};
-       void registerAttributes(){ PeriodicEngine::registerAttributes(); 
REGISTER_ATTRIBUTE(unbalancedForce); REGISTER_ATTRIBUTE(useMaxForce);}
+       REGISTER_ATTRIBUTES(PeriodicEngine,
+               (unbalancedForce)
+               (useMaxForce)
+       );
        DECLARE_LOGGER;
-       REGISTER_CLASS_NAME(BrefcomGlobalCharacteristics);
-       REGISTER_BASE_CLASS_NAME(PeriodicEngine);
+       REGISTER_CLASS_AND_BASE(BrefcomGlobalCharacteristics,PeriodicEngine);
 };
 REGISTER_SERIALIZABLE(BrefcomGlobalCharacteristics);
 
@@ -90,41 +92,37 @@
                //      BrefcomContact(Real _E, Real _G, Real 
_tanFrictionAngle, Real _undamagedCohesion, Real _equilibriumDist, Real 
_crossSection, Real _epsCrackOnset, Real _epsFracture, Real _expBending, Real 
_xiShear, Real _tau=0, Real _expDmgRate=1): InteractionPhysics(), E(_E), G(_G), 
tanFrictionAngle(_tanFrictionAngle), undamagedCohesion(_undamagedCohesion), 
equilibriumDist(_equilibriumDist), crossSection(_crossSection), 
epsCrackOnset(_epsCrackOnset), epsFracture(_epsFracture), 
expBending(_expBending), xiShear(_xiShear), tau(_tau), expDmgRate(_expDmgRate) 
{ epsT=Vector3r::ZERO; kappaD=0; isCohesive=false; neverDamage=false; omega=0; 
Fn=0; Fs=Vector3r::ZERO; 
/*TRVAR5(epsCrackOnset,epsFracture,Kn,crossSection,equilibriumDist); */ }
                virtual ~BrefcomContact();
 
+               REGISTER_ATTRIBUTES(NormalShearInteraction,
+                       (E)
+                       (G)
+                       (tanFrictionAngle)
+                       (undamagedCohesion)
+                       (crossSection)
+                       (epsCrackOnset)
+                       (epsFracture)
+                       (omegaThreshold)
+                       (xiShear)
+                       (tau)
+                       (expDmgRate)
+                       (transStrainCoeff)
 
-               virtual void registerAttributes(){
-                       NormalShearInteraction::registerAttributes();
-                       REGISTER_ATTRIBUTE(E);
-                       REGISTER_ATTRIBUTE(G);
-                       REGISTER_ATTRIBUTE(tanFrictionAngle);
-                       REGISTER_ATTRIBUTE(undamagedCohesion);
-                       REGISTER_ATTRIBUTE(crossSection);
-                       REGISTER_ATTRIBUTE(epsCrackOnset);
-                       REGISTER_ATTRIBUTE(epsFracture);
-                       REGISTER_ATTRIBUTE(omegaThreshold);
-                       REGISTER_ATTRIBUTE(xiShear);
-                       REGISTER_ATTRIBUTE(tau);
-                       REGISTER_ATTRIBUTE(expDmgRate);
-                       REGISTER_ATTRIBUTE(transStrainCoeff);
+                       (kappaD)
+                       (neverDamage)
+                       (epsT)
+                       (epsTrans)
 
-                       REGISTER_ATTRIBUTE(kappaD);
-                       REGISTER_ATTRIBUTE(neverDamage);
-                       REGISTER_ATTRIBUTE(epsT);
-                       REGISTER_ATTRIBUTE(epsTrans);
+                       (isCohesive)
 
-                       REGISTER_ATTRIBUTE(isCohesive);
-
-                       // auxiliary params, to make them accessible from python
-                       REGISTER_ATTRIBUTE(omega);
-                       REGISTER_ATTRIBUTE(Fn);
-                       REGISTER_ATTRIBUTE(Fs);
-                       REGISTER_ATTRIBUTE(epsN);
-                       REGISTER_ATTRIBUTE(sigmaN);
-                       REGISTER_ATTRIBUTE(sigmaT);
-                       REGISTER_ATTRIBUTE(relResidualStrength);
-               };
-
-       REGISTER_CLASS_NAME(BrefcomContact);
-       REGISTER_BASE_CLASS_NAME(NormalShearInteraction);
+                       // auxiliary params to make them accessible from python
+                       (omega)
+                       (Fn)
+                       (Fs)
+                       (epsN)
+                       (sigmaN)
+                       (sigmaT)
+                       (relResidualStrength)
+               );
+       REGISTER_CLASS_AND_BASE(BrefcomContact,NormalShearInteraction);
        DECLARE_LOGGER;
 };
 REGISTER_SERIALIZABLE(BrefcomContact);
@@ -141,9 +139,8 @@
                //! average damage including already deleted contacts
                Real normDmg;
                BrefcomPhysParams(): epsVolumetric(0.), numBrokenCohesive(0), 
numContacts(0), normDmg(0.) {createIndex();};
-               virtual void 
registerAttributes(){BodyMacroParameters::registerAttributes(); 
REGISTER_ATTRIBUTE(epsVolumetric); REGISTER_ATTRIBUTE(numBrokenCohesive); 
REGISTER_ATTRIBUTE(numContacts); REGISTER_ATTRIBUTE(normDmg); }
-               REGISTER_CLASS_NAME(BrefcomPhysParams);
-               REGISTER_BASE_CLASS_NAME(BodyMacroParameters);
+               REGISTER_ATTRIBUTES(BodyMacroParameters, (epsVolumetric) 
(numBrokenCohesive) (numContacts) (normDmg) );
+               REGISTER_CLASS_AND_BASE(BrefcomPhysParams,BodyMacroParameters);
 };
 REGISTER_SERIALIZABLE(BrefcomPhysParams);
 
@@ -167,11 +164,8 @@
                BrefcomLaw() { Shop::Bex::initCache(); };
                void action(MetaBody*);
        protected: 
-               virtual void 
registerAttributes(){InteractionSolver::registerAttributes();};
-               void postProcessAttributes(bool deserializing){}
        NEEDS_BEX("Force","Momentum");
-       REGISTER_CLASS_NAME(BrefcomLaw);
-       REGISTER_BASE_CLASS_NAME(InteractionSolver);
+       REGISTER_CLASS_AND_BASE(BrefcomLaw,InteractionSolver);
        DECLARE_LOGGER;
 };
 REGISTER_SERIALIZABLE(BrefcomLaw);
@@ -207,26 +201,23 @@
                }
 
                virtual void go(const shared_ptr<PhysicalParameters>& pp1, 
const shared_ptr<PhysicalParameters>& pp2, const shared_ptr<Interaction>& 
interaction);
-               virtual void registerAttributes(){
-                       InteractionPhysicsEngineUnit::registerAttributes();
-                       REGISTER_ATTRIBUTE(cohesiveThresholdIter);
+               REGISTER_ATTRIBUTES(InteractionPhysicsEngineUnit,
+                       (cohesiveThresholdIter)
+                       (G_over_E)
+                       (expBending)
+                       (xiShear)
+                       (sigmaT)
+                       (neverDamage)
+                       (epsCrackOnset)
+                       (relDuctility)
+                       (tau)
+                       (expDmgRate)
+                       (omegaThreshold)
+                       (transStrainCoeff)
+               );
 
-                       REGISTER_ATTRIBUTE(G_over_E);
-                       REGISTER_ATTRIBUTE(expBending);
-                       REGISTER_ATTRIBUTE(xiShear);
-                       REGISTER_ATTRIBUTE(sigmaT);
-                       REGISTER_ATTRIBUTE(neverDamage);
-                       REGISTER_ATTRIBUTE(epsCrackOnset);
-                       REGISTER_ATTRIBUTE(relDuctility);
-                       REGISTER_ATTRIBUTE(tau);
-                       REGISTER_ATTRIBUTE(expDmgRate);
-                       REGISTER_ATTRIBUTE(omegaThreshold);
-                       REGISTER_ATTRIBUTE(transStrainCoeff);
-               }
-
                FUNCTOR2D(BrefcomPhysParams,BrefcomPhysParams);
-               REGISTER_CLASS_NAME(BrefcomMakeContact);
-               REGISTER_BASE_CLASS_NAME(InteractionPhysicsEngineUnit);
+               
REGISTER_CLASS_AND_BASE(BrefcomMakeContact,InteractionPhysicsEngineUnit);
                DECLARE_LOGGER;
 };
 REGISTER_SERIALIZABLE(BrefcomMakeContact);
@@ -234,10 +225,9 @@
 class GLDrawBrefcomContact: public GLDrawInteractionPhysicsFunctor {
        public: virtual void go(const shared_ptr<InteractionPhysics>&,const 
shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool 
wireFrame);
        virtual ~GLDrawBrefcomContact() {};
-       virtual void registerAttributes(){ REGISTER_ATTRIBUTE(contactLine); 
REGISTER_ATTRIBUTE(dmgLabel); REGISTER_ATTRIBUTE(dmgPlane); 
REGISTER_ATTRIBUTE(epsT); REGISTER_ATTRIBUTE(epsTAxes); 
REGISTER_ATTRIBUTE(normal); REGISTER_ATTRIBUTE(colorStrain); 
REGISTER_ATTRIBUTE(epsNLabel);}
+       REGISTER_ATTRIBUTES(/*no 
base*/,(contactLine)(dmgLabel)(dmgPlane)(epsT)(epsTAxes)(normal)(colorStrain)(epsNLabel));
        RENDERS(BrefcomContact);
-       REGISTER_CLASS_NAME(GLDrawBrefcomContact);
-       REGISTER_BASE_CLASS_NAME(GLDrawInteractionPhysicsFunctor);
+       
REGISTER_CLASS_AND_BASE(GLDrawBrefcomContact,GLDrawInteractionPhysicsFunctor);
        DECLARE_LOGGER;
        static bool 
contactLine,dmgLabel,dmgPlane,epsT,epsTAxes,normal,colorStrain,epsNLabel;
 };
@@ -249,9 +239,8 @@
                Real maxOmega;
                BrefcomDamageColorizer(){maxOmega=0;}
                virtual void action(MetaBody*);
-       virtual void registerAttributes(){ 
PeriodicEngine::registerAttributes(); REGISTER_ATTRIBUTE(maxOmega);}
-       REGISTER_CLASS_NAME(BrefcomDamageColorizer);
-       REGISTER_BASE_CLASS_NAME(PeriodicEngine);
+       REGISTER_ATTRIBUTES(PeriodicEngine,(maxOmega));
+       REGISTER_CLASS_AND_BASE(BrefcomDamageColorizer,PeriodicEngine);
 };
 REGISTER_SERIALIZABLE(BrefcomDamageColorizer);
 

Modified: trunk/extra/usct/UniaxialStrainControlledTest.hpp
===================================================================
--- trunk/extra/usct/UniaxialStrainControlledTest.hpp   2008-12-03 10:04:10 UTC 
(rev 1593)
+++ trunk/extra/usct/UniaxialStrainControlledTest.hpp   2008-12-08 09:17:00 UTC 
(rev 1594)
@@ -133,7 +133,7 @@
                virtual void applyCondition(MetaBody* rootBody);
                UniaxialStrainer(){axis=2; asymmetry=0; currentStrainRate=0; 
originalLength=-1; limitStrain=0; notYetReversed=true; crossSectionArea=-1; 
needsInit=true; /* sensorsPusher=shared_ptr<UniaxialStrainSensorPusher>(); */ 
recordFile="/tmp/usct.data"; strain=avgStress=/*avgTransStrain=*/0; 
blockRotations=false; blockDisplacements=false;  
stopStrain=numeric_limits<Real>::quiet_NaN(); active=true; idleIterations=0; };
                virtual ~UniaxialStrainer(){};
-               REGISTER_ATTRIBUTES_WITH_BASE(DeusExMachina,
+               REGISTER_ATTRIBUTES(DeusExMachina,
                                (strainRate) 
                                (stopStrain) 
                                (active)

Modified: trunk/lib/serialization/Serializable.hpp
===================================================================
--- trunk/lib/serialization/Serializable.hpp    2008-12-03 10:04:10 UTC (rev 
1593)
+++ trunk/lib/serialization/Serializable.hpp    2008-12-08 09:17:00 UTC (rev 
1594)
@@ -43,13 +43,17 @@
                 registerAttribute( #attribute, attribute );
 
 
+// placeholder function for registration with empty base
+namespace{
+       void registerAttributes(){}
+};
 
 #define _REGISTER_ATTRIBUTES_BODY(x,y,z) 
registerAttribute(BOOST_PP_STRINGIZE(z),z);
 #define REGISTER_ATTRIBUTES_MANY(attrs) 
BOOST_PP_SEQ_FOR_EACH(_REGISTER_ATTRIBUTES_BODY,~,attrs)
 //! create member function that register attributes; must be parenthesized, 
without commas: (attr1) (attr2) (attr3) ...
-#define REGISTER_ATTRIBUTES(attrs) protected: void registerAttributes(){ 
REGISTER_ATTRIBUTES_MANY(attrs) }
+//#define REGISTER_ATTRIBUTES(attrs) protected: void registerAttributes(){ 
REGISTER_ATTRIBUTES_MANY(attrs) }
 //! Same as REGISTER_ATTRIBUTES, but with first argument of base class, of 
which registerAttributes will be called first
-#define REGISTER_ATTRIBUTES_WITH_BASE(baseClass,attrs) protected: void 
registerAttributes(){ baseClass::registerAttributes(); 
REGISTER_ATTRIBUTES_MANY(attrs) }
+#define REGISTER_ATTRIBUTES(baseClass,attrs) protected: void 
registerAttributes(){ baseClass::registerAttributes(); 
REGISTER_ATTRIBUTES_MANY(attrs) }
 
 
 // for both fundamental and non-fundamental cases

Modified: trunk/pkg/common/Engine/DeusExMachina/Se3Interpolator.hpp
===================================================================
--- trunk/pkg/common/Engine/DeusExMachina/Se3Interpolator.hpp   2008-12-03 
10:04:10 UTC (rev 1593)
+++ trunk/pkg/common/Engine/DeusExMachina/Se3Interpolator.hpp   2008-12-08 
09:17:00 UTC (rev 1594)
@@ -37,7 +37,7 @@
                virtual ~Se3Interpolator(){};
                virtual void applyCondition(MetaBody* mb);
        protected:
-               REGISTER_ATTRIBUTES_WITH_BASE(DeusExMachina,
+               REGISTER_ATTRIBUTES(DeusExMachina,
                        (done)
                        (started)
                        (start)


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to