[clam-devel] Simplifying DynamicTypes
Pau Arumi
pau.arumi at immsound.com
Tue Jul 19 02:48:51 PDT 2011
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 at lists.clam-project.org
> http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org
More information about the clam-devel
mailing list