Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

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]++; } }
or
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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (17)
As of 2015-07-31 14:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (278 votes), past polls