X-Git-Url: https://mop.ddnsfree.com/gitweb/?p=xynt.git;a=blobdiff_plain;f=xynt-base.js;h=157141b15b0d130ff7a43a116b0dfe45e4fbf253;hp=80c924985a59ad4c5cd07fcfaeb90337baf04eea;hb=26f2f12f9e360b879acb551ae130f91b8b6cdd11;hpb=4450618fd580a5491bafcc9d1238dd89e501f9cf diff --git a/xynt-base.js b/xynt-base.js index 80c9249..157141b 100644 --- a/xynt-base.js +++ b/xynt-base.js @@ -1,3 +1,8 @@ +/* + * TODO + * super methods caller + */ + function Extends(sub) { var proto; @@ -39,11 +44,96 @@ function Extends(sub) } multi(inh, sub, true); - inh.super = function(cl, method) { - return this.xynt_sup_cl[cl].method.apply(this,arguments); + /* + inh.superrr = function(cl, method) { + console.log("xyx "+cl); + // console.log("xx"+arguments[0]); + // return this.xynt_sup_cl[cl].method.apply(this,arguments.slice(2)); } + */ sub.prototype = inh; console.log(sub.prototype.xynt_sup); console.log(sub.prototype.xynt_sup_cl); } + +function ExtendsInst(sub) +{ + var proto, cl, args; + + console.log("INIZIO EXT INST"); + + var multi = function(sub, super, is_last) + { + var proto = super.prototype; + + if (typeof(sub.xynt_sup) == 'undefined') + sub.xynt_sup = new Array(); + if (typeof(sub.xynt_sup_cl) == 'undefined') + sub.xynt_sup_cl = new Array(); + + for (var f in proto) { + if (f == "xynt_sup" || f == "xynt_sup_cl") + continue; + + if (typeof(sub[f]) != 'undefined') + return false; + + console.log("LOOP: "+f); + if( f != "constructor" && typeof(proto[f]) == "function" && !is_last){ + console.log("M_FU: "+proto['name']+" F: "+f); + sub[f] = function(){ + console.log("INFU PR: " + proto[f] + " FUNC: "+f+" THIS: " + this); + return proto[f].apply(this, arguments); + } + } + else { + console.log("M_PR: "+proto.name+" A: "+f+" FUN: "+proto[f]); + sub[f] = proto[f]; + } + } + return true; + } + + console.log("POST FUNC"); + + for( var i=1; i < arguments.length ; i++){ + console.log("POST FUNC IN LOOP"); + cl = arguments[i]; + if (i+1 < arguments.length && typeof(arguments[i+1]) != 'function') { + i++; + args = arguments[i]; + } + if (multi(sub, cl, false) == false) { + console.log("POST FUNC FALSE 1"); + return (false); + } + + console.log("POST FUNC PRE APPLY"); + cl.apply(sub, args); + console.log("POST FUNC POST APPLY"); + + sub.xynt_sup.push(cl.prototype); + sub.xynt_sup_cl.push(cl); + } + + console.log("FINE EXT INST"); + return true; +} + +function show_class(cl) { + console.log("Attributes Class of "+cl); + for (f in cl.prototype) { + console.log(f+": ["+cl.prototype[f]+"]"); + } + console.log("---"); +} + +function show_inst(inst) { + console.log("Attributes Instance of "+inst); + for (f in inst) { + console.log(f+": ["+inst[f]+"]"); + } + console.log("---"); +} +