summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/lang/aspect/memoizerGuard.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/lang/aspect/memoizerGuard.js')
-rw-r--r--js/dojo/dojox/lang/aspect/memoizerGuard.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/js/dojo/dojox/lang/aspect/memoizerGuard.js b/js/dojo/dojox/lang/aspect/memoizerGuard.js
new file mode 100644
index 0000000..81f5e52
--- /dev/null
+++ b/js/dojo/dojox/lang/aspect/memoizerGuard.js
@@ -0,0 +1,37 @@
+//>>built
+// wrapped by build app
+define("dojox/lang/aspect/memoizerGuard", ["dijit","dojo","dojox"], function(dijit,dojo,dojox){
+dojo.provide("dojox.lang.aspect.memoizerGuard");
+
+(function(){
+ var aop = dojox.lang.aspect,
+ reset = function(/*String|Array?*/ method){
+ var that = aop.getContext().instance, t;
+ if(!(t = that.__memoizerCache)){ return; }
+ if(arguments.length == 0){
+ delete that.__memoizerCache;
+ }else if(dojo.isArray(method)){
+ dojo.forEach(method, function(m){ delete t[m]; });
+ }else{
+ delete t[method];
+ }
+ };
+
+
+ aop.memoizerGuard = function(/*String|Array?*/ method){
+ // summary:
+ // Invalidates the memoizer's cache (see dojox.lang.aspect.memoizer)
+ // after calling certain methods.
+ //
+ // method:
+ // Optional method's name to be guarded: only cache for
+ // this method will be invalidated on call. Can be a string
+ // or an array of method names. If omitted the whole cache
+ // will be invalidated.
+
+ return { // Object
+ after: function(){ reset(method); }
+ };
+ };
+})();
+});