[TransWarp] more mdl_XXX methods ?

Ulrich Eck ueck at net-labs.de
Wed Apr 2 09:41:07 EST 2003


> >
> >mdl_fromXML (fromXML) -> Convert XML to state
> 
> Uh, that one's not gonna happen.  There are too many possible XML 
> representations of something.  Instead, I'd suggest using the 
> 'peak.storage.xmi' package to handle serialization to/from XML.

> >mdl_toXML (toXML) -> Convert state to XML
> 
> Not gonna happen.
> 

you're right .. this is too generic to make any sense ..

the storage.xmi package is only cabable to handle the 
XMI format right ??

so if i need to build custom xml-"DM"s i can take xmi.py as template
and write from scratch (did this for my wxPython XRC parser,
that converts XRC-Resource files into a nice component model - but
it needs some refactoring .. it was build before the peak.model changed)

> 
> 
> >one cannot add these methods easily because the setup
> >is done via metaclasses - that would mean, i need to
> >extend supertypes but cannot reuse the standard
> >model.Attribute/Collection/... classes but need to
> >define them by myself
> 
> There's always monkeypatching.  :)  But really, if you wanted to add 
> something to say, an Attribute, it's not that difficult:
> 
> class MyAttrib(model.Attribute):
>      toFields = binding.classAttr(binding.bindTo('typeObject/mdl_toFields'))
> 
> 
> MyAttrib and its subclasses will then have a per-class 'toFields()' method 
> based on their respective referenced types.
> 
> You can also do it like this:
> 
> class MyFeatureBase(model.StructuralFeature):
>      toFields = binding.classAttr(binding.bindTo('typeObject/mdl_toFields'))
> 
> And then derive your own Attribute, Collection, etc. features again.  If 
> you look at peak.model.features, you'll see that most of the other classes 
> are maybe only 3 lines of code, as simple subclasses of 
> StructuralFeature.  This was intentional, to allow for this sort of thing.
> 
> Keep in mind, though, that PEAK reserves the 'mdl_' prefix for its own use, 
> so if you go around adding 'mdl_' methods, they might get stomped by a 
> PEAK-specific thing later on.  Feel free to create your own prefix for any 
> special methods like this that you need.


the trick with binding.classAttr help building things like this and
helps for now .. 

thanks :)

-- 
---------------------------------------

Ulrich Eck
net-labs Systemhaus GmbH
Ebersberger Str. 46
85570 Markt Schwaben - Germany

eMail: ueck <at> net-labs.de
phone: +49 8121 4747 10
fax:   +49 8121 4747 77




More information about the PEAK mailing list