netwerk/base/src/nsIOService.cpp has an RAII-style AutoIncrement class that would be useful elsewhere. I'd like to move it to mfbt.
Created attachment 543842 [details] [diff] [review] Patch v1a, r=dholbert Proposed patch. dholbert has already given this r+ in bug 665334 but requesting review from cjones too.
Comment on attachment 543842 [details] [diff] [review] Patch v1a, r=dholbert Hi Brian, I'm r-'ing this patch not because there are major problems with the impl, but because I'm not sure this is a common pattern across js/src and gecko. The pattern I've come across more commonly is . If AutoIncrement starts seeing use outside of the IO service, we can polish up it and revisit. CC'ing luke for a second opinion.  http://mxr.mozilla.org/mozilla-central/source/xpcom/glue/AutoRestore.h#163
I agree with the general sentiment that its good to hoist lazily (when needed) vs. eagerly. I also agree that I can't think of any uses for AutoIncrement in SM; usually the ++/-- is part of some specific guard that does more than just ++/--.
(In reply to comment #2) >  > http://mxr.mozilla.org/mozilla-central/source/xpcom/glue/AutoRestore.h#163 Much as I like the sleekness of AutoIncrement, I think that AutoRestore should serve our purposes equally well. Brian -- so it looks like we could replace your proposed... > AutoIncrement<PRUint16> inc(&mUpdateIntervalRecursionDepth); ...with... > AutoRestore<PRUint16> depthRestorer(mUpdateIntervalRecursionDepth); > mUpdateIntervalRecursionDepth++; Perhaps we should re-target this bug to be about that?
Thanks Chris and Luke. Fair call. I failed to point out that this wasn't just speculative; the reason for requesting it is that we need something like this in SMIL. However, as Daniel points out, the AutoRestore option Chris mentioned will do the trick. Thanks!
Created attachment 544119 [details] [diff] [review] Patch v2a
Landed on m-c: http://hg.mozilla.org/mozilla-central/rev/e4a42cc36dc7