Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
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
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 drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2014-07-13 17:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (251 votes), past polls