On Thursday 31 July 2014, Rishabh Yadav wrote: > What does set_owner(CARD* owner) and clone() public member > function from class CARD_LIST do?
clone() makes a copy of itself. _owner is a back pointer. It points back to the object containing this one. Suppose you have a subcircuit, with a bunch of things inside. For each of those things inside, the _owner is the thing they are inside of. Not to be confused with _parent, which is someone who shares your DNA. In gnucap, the _parent is the object that was cloned to make this one. Usually in gnucap when objects are cloned, the clone is a "shallow copy" of the parent. A "shallow copy" just copies pointers sharing data with parent and siblings. The opposite of "shallow" is "deep". A "deep copy" of an object copies everything, including recursively copying things attached by a pointer. Back to _owner ... in a CARD_LIST, the _owner is a CARD that owns it. The most obvious case here is a subckt. A subckt instance is a CARD, which has a CARD_LIST. That CARD_LIST and all of the CARDs in it have the same _owner. The root circuit has no _owner. Commands in the root scope (which is all we have for now) have no _owner. Devices inside a subcircuit are owned by the DEV_SUBCKT. Some other devices may also have internal subcircuits, most significantly the ones defined in .model files that are processed through modelgen. What it is used for? .... mostly parameter evaluation and device searching. It is a hook back to an enclosing scope. What to set_owner to? .... For the loop and conditional commands, you are storing DEV_DOT's in a CARD_LIST. Where is that CARD_LIST attached? If it is attached to some CARD, that's the _owner. If it isn't attached to some CARD, how are you keeping track of it? There is only one CARD_LIST that is not attached to some CARD. That's CARD_LIST::card_list, the root circuit. For things placed there, the _owner is NULL. _______________________________________________ Gnucap-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gnucap-devel
