blob: 3f99f4109130e6c179e5ee137f3c426fb49967a7 [file] [log] [blame]
/*
Copyright (c) 2004-2009, 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
*/
if(!dojo._hasResource["dojox.lang.oo.mixin"]){
dojo._hasResource["dojox.lang.oo.mixin"]=true;
dojo.provide("dojox.lang.oo.mixin");
dojo.experimental("dojox.lang.oo.mixin");
dojo.require("dojox.lang.oo.Filter");
dojo.require("dojox.lang.oo.Decorator");
(function(){
var oo=dojox.lang.oo,_1=oo.Filter,_2=oo.Decorator,_3={},_4=function(_5){
return _5;
},_6=function(_7,_8,_9){
return _8;
},_a=function(_b,_c,_d,_e){
_b[_c]=_d;
},_f={},_10=dojo._extraNames,_11=_10.length,_12=oo.applyDecorator=function(_13,_14,_15,_16){
if(_15 instanceof _2){
var d=_15.decorator;
_15=_12(_13,_14,_15.value,_16);
return d(_14,_15,_16);
}
return _13(_14,_15,_16);
};
oo.__mixin=function(_17,_18,_19,_1a,_1b){
var _1c,_1d,_1e,_1f,_20,i;
for(_1c in _18){
_1e=_18[_1c];
if(!(_1c in _3)||_3[_1c]!==_1e){
_1d=_1a(_1c,_17,_18,_1e);
if(_1d&&(!(_1d in _17)||!(_1d in _3)||_3[_1d]!==_1e)){
_20=_17[_1d];
_1f=_12(_19,_1d,_1e,_20);
if(_20!==_1f){
_1b(_17,_1d,_1f,_20);
}
}
}
}
if(_11){
for(i=0;i<_11;++i){
_1c=_10[i];
_1e=_18[_1c];
if(!(_1c in _3)||_3[_1c]!==_1e){
_1d=_1a(_1c,_17,_18,_1e);
if(_1d&&(!(_1d in _17)||!(_1d in _3)||_3[_1d]!==_1e)){
_20=_17[_1d];
_1f=_12(_19,_1d,_1e,_20);
if(_20!==_1f){
_1b(_17,_1d,_1f,_20);
}
}
}
}
}
return _17;
};
oo.mixin=function(_21,_22){
var _23,_24,i=1,l=arguments.length;
for(;i<l;++i){
_22=arguments[i];
if(_22 instanceof _1){
_24=_22.filter;
_22=_22.bag;
}else{
_24=_4;
}
if(_22 instanceof _2){
_23=_22.decorator;
_22=_22.value;
}else{
_23=_6;
}
oo.__mixin(_21,_22,_23,_24,_a);
}
return _21;
};
})();
}