On Saturday 15 December 2012, Felix Salfelder wrote: > as it seems, the call > _n[i].n_()->set_user_number(_n[j].e_()) > from DEV::expand collapses the nodes i and j.
No. It is set in alloc_hold_vectors. Don't tamper with it. > afaics (as of now) in node_t::map, e_() equals t_(). > node_t::map sets _m = to_internal(t_()); > to make collapses work, e_() should be used here. > (if this is wrong, please tell me how i'm supposed to > collapse nodes) I think what you want is: //============ _n[i] = _n[j]; //============ This is old code, originally written in "C", still really in "C". Think of node_t as a pointer, or like "NODE*". node_t should really be a NODE::iterator. A "NODE" is the actual node. It stores info, and exists once for each, all in the _nstat array. Think of that "user_number" as an un-pointer, kind of like the "&" takes the address. Making the whole _nstat array all LOGIC_NODE is really wasteful. and a throwback to the old C code. It is wasteful in the sense that analog only nodes carry digital baggage and digital only nodes carry analog baggage, just in case it is discovered later that you really need a mixed node. A side benefit of this is that you can put analog probes on a digital node or digital probes on an analog node, and get an answer. _______________________________________________ Gnucap-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gnucap-devel
