Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re^5: Quickly detecting variable writes

by sfink (Deacon)
on Jan 08, 2007 at 06:47 UTC ( #593484=note: print w/ replies, xml ) Need Help??

in reply to Re^4: Quickly detecting variable writes
in thread Quickly detecting variable writes

$x is some attribute of some node. Associated with that attribute is a (possibly empty) list, @kabluther of callbacks to other nodes associated with this node by this attribute.
Sorry, you misunderstood me. @kabluther has nothing whatsoever to do with $x or callbacks. It's just an example of some sort of processing that might occur. The example could also be
onTime { our $pos : Attr('position'); our $active; if ($active) { $pos->[0]++; } }
onTime { our $x : Attr('something'); our @fixups; foreach (@fixups) { $x += $_; } @fixups = (); }
The "callbacks" I was referring to are behind the scenes. Here's an example of the previous code sample, without using the new "simplified" API:
onTime { my $attr = $NODE->getAttr("something"); my $val = $attr->getValue(); foreach (@fixups) { $val += $_; } @fixups = (); $attr->setValue($val); $attr->doCallbacks(); }
That's how it would be written with the current API, unless they wanted to suppress the possibly unneeded callbacks, in which case they would spell it:
onTime { my $attr = $NODE->getAttr("something"); my $val = $attr->getValue(); my $was_updated = 0; foreach (@fixups) { $val += $_; $was_updated = 1; } @fixups = (); if ($was_updated) { $attr->setValue($val); $attr->doCallbacks(); } }

Comment on Re^5: Quickly detecting variable writes
Select or Download Code
Replies are listed 'Best First'.
Re^6: Quickly detecting variable writes
by BrowserUk (Pope) on Jan 08, 2007 at 07:11 UTC

    Do you have any example where your $was_updated flag cannot be done away with completely and replaced with a simple test against @fixups?

    onTime { my $attr = $NODE->getAttr("something"); my $val = $attr->getValue(); foreach (@fixups) { $val += $_; } if ( @fixups ) { $attr->setValue($val); $attr->doCallbacks(); } @fixups = (); }

    If not, I'm kinda at a loss to understand the difficulty.

    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://593484]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2015-12-02 01:48 GMT
Find Nodes?
    Voting Booth?

    My keyboard shows this many letters:

    Results (31 votes), past polls