The rain swept the over-design away without causing damages. Well done! P
El dl 18 de 07 de 2011 a les 17:03 +0200, en/na David García Garzón va escriure: > 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 _______________________________________________ clam-devel mailing list clam-devel@lists.clam-project.org http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org