diff options
Diffstat (limited to 'js/dojo-1.6/dojox/lang/aspect/memoizer.xd.js')
| -rw-r--r-- | js/dojo-1.6/dojox/lang/aspect/memoizer.xd.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/lang/aspect/memoizer.xd.js b/js/dojo-1.6/dojox/lang/aspect/memoizer.xd.js new file mode 100644 index 0000000..49bb274 --- /dev/null +++ b/js/dojo-1.6/dojox/lang/aspect/memoizer.xd.js @@ -0,0 +1,60 @@ +/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+dojo._xdResourceLoaded(function(dojo, dijit, dojox){
+return {depends: [["provide", "dojox.lang.aspect.memoizer"]],
+defineResource: function(dojo, dijit, dojox){if(!dojo._hasResource["dojox.lang.aspect.memoizer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.lang.aspect.memoizer"] = true;
+dojo.provide("dojox.lang.aspect.memoizer");
+
+(function(){
+ var aop = dojox.lang.aspect;
+
+ var memoize1 = {
+ around: function(key){
+ var ctx = aop.getContext(), self = ctx.joinPoint, that = ctx.instance, t, u, ret;
+ if((t = that.__memoizerCache) && (t = t[self.targetName]) && (key in t)){
+ return t[key];
+ }
+ var ret = aop.proceed.apply(null, arguments);
+ if(!(t = that.__memoizerCache)){ t = that.__memoizerCache = {}; }
+ if(!(u = t[self.targetName])){ u = t[self.targetName] = {}; }
+ return u[key] = ret;
+ }
+ };
+
+ var memoizeN = function(/*Function*/keyMaker){
+ return {
+ around: function(/*arguments*/){
+ var ctx = aop.getContext(), self = ctx.joinPoint, that = ctx.instance, t, u, ret,
+ key = keyMaker.apply(that, arguments);
+ if((t = that.__memoizerCache) && (t = t[self.targetName]) && (key in t)){
+ return t[key];
+ }
+ var ret = aop.proceed.apply(null, arguments);
+ if(!(t = that.__memoizerCache)){ t = that.__memoizerCache = {}; }
+ if(!(u = t[self.targetName])){ u = t[self.targetName] = {}; }
+ return u[key] = ret;
+ }
+ };
+ };
+
+ aop.memoizer = function(/*Function?*/ keyMaker){
+ // summary:
+ // Returns an object, which can be used to count calls to methods.
+ //
+ // keyMaker:
+ // the function, which takes method's arguments and returns a key,
+ // which can be used to index the result.
+
+ return arguments.length == 0 ? memoize1 : memoizeN(keyMaker); // Object
+ };
+})();
+
+}
+
+}};});
|
