On 12/15/2010 01:41 PM, Wayne Stambaugh wrote:
> On 12/15/2010 2:21 PM, Dick Hollenbeck wrote:
>>> I didn't use pin_swap in an example because a 7400 is so simple you 
>>> typically
>>> wouldn't need to swap any pins.  I see pin swapping being useful on 
>>> component
>>> with a lot of reconfigurable pins (think micro-controllers or gate arrays).
>>> The primary usage pattern I see with pin swapping is say I am 90% done 
>>> wiring a
>>> 32 bit micro-controller in my schematic when I realize that the last couple 
>>> of
>>> pins are going to turn my schematic into a rats nest.  Rather than rip up 
>>> all
>>> the work you've just done, you could quickly create a new component based on
>>> the existing one and swap the pins that would allow you to finish wiring 
>>> your
>>> schematic the way you want it to.  I can see pin swapping also finding it's 
>>> way
>>> into the schematic edit. 
>>
>> I don't see that happening, and this is because components are nothing but
>> instantiated parts.  You cannot swap the pins of a component, because 
>> technically it
>> does not have any.  So this has to happen in the parts list.  Behind the 
>> scenes you
>> could clone the part to a new parts list entry, and then change the part 
>> reference in
>> the component to point to the new part in the parts list.
>>
>> Like I said, it is going to take discipline to hang on to this parts list 
>> concept. 
>> I'm fully committed to doing that however, so expect resistance from me on 
>> concepts
>> that make it difficult to keep the parts list.  Sorry.
> I guess I'm still not 100% sure how all this is going to fit together.  The
> above should read:  Create a new part derived from the existing one and swap
> the pins in the inherited part.  Change the part in your schematic to your new
> part.
>
> Wayne


The definition of "component" in the new doxygen output might help.  There is 
not much
to a component.  It has no pins itself.


The component is in the schematic.  It points to a part in the parts list, the 
part
that it "*is*".  The component has no pins itself, but borrows those of the 
part via
pointer at the C++ level.


To swap pins in a component:

Create a new part derived from the component's current one, and swap

the pins in the inherited part.  Change the component in the schematic such 
that its part reference points to the new part in the parts list.


We'll need reference counting in RAM loaded parts so they cannot be deleted if 
some
higher level entity, part or component, is dependent on them. 

It is not generally easy to delete a part in the new API.  Only possible to 
delete a
part if its LIB has LIB_SINK, and even now I remember this function is missing 
in
LIB_SINK.  Currently I don't see the PARTS_LIST class using the 
LIB_SOURCE+LIB_SINK
delegates, since it can override the LIB functions using polymorphism.


Hope this helps,

Dick


_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to