I got an amusing rainy sunday i spent refactoring the DynamicType class. There is a never merged DT-Inheritance branch. The problem it requires a lot of user code refactor because it changed interface and the branch got quite old waiting the time to merge. So I am taking the approach of simplifying the current code instead by removing a lot of unused over-design.
Many unused protected accessors were removed (were thought to be used by CLAM::Branches but they never came to existance). At the end just the high level interface is available outside the DT class (so i had more freedom to hack it). Also any public or protected data is now private. I renamed the IsAttributeInstantiated(i) into HasAttribute(i). So the generic interface has became: HasAttribute(i) AddAttribute(i) RemoveAttribute(i) Which is quite parallel to the HasX, AddX, RemoveX, interface provided by the DT macros on concrete dtypes. Tested and it doesn't conflict with and attribute named "Attribute" (Generic interface is hidden under the regular one but you DON'T want to use the generic interface if you have the concrete one available) The global flags that hold that some attribute has been added or removed were hard to maintain (needed a loop). A more convenient _attributesNeedingUpdate member is used for that. The _dataSize was computed accomulatively every time we add or remove an attribute. This leads to a possible inconsistence and it is used just once on UpdateData. Now it is computed in UpdateData and i removed the member. Last but not least important. It seems like nobody in clam-project repositories used the 'shared' and 'deep' copy constructor flags so that meant that the SharedCopy and ShallowCopy (by default deep=true) are not used at all and thus we can remove a lot of complexity. If your code used Shared or Shallow copies give us a warning (i would suggest using pointers instead, but it depends on the case). Also if you implemented some intermediate class (like ProcessintConfig, ProcessingData...) they need to remove those extra parameters to the copy constructor. Many small refactors were done to clearify the code. I was passing the tests but anyway beware the bugs. David. _______________________________________________ clam-devel mailing list clam-devel@lists.clam-project.org http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org