aureooms/js-gn

View on GitHub
src/undirected/online/data/fuse.js

Summary

Maintainability
B
7 hrs
Test Coverage
/**
 * Fuse multiple graph data structure allowing to
 * repeat the same write operations on all of them.
 * Adds a pt member to all edges and vertices of each
 * graph allowing direct reference of twin edges and
 * vertices in other fused graphs.
 */

export function fuse_t(){

    var fuse = function(){

        this.obj = Array.prototype.slice.call(arguments);

    };


    fuse.prototype.vadd = function(h){
        var i = 0, len = this.obj.length;
        var pt = new Array(len);
        
        for(; i < len; ++i){
            pt[i] = this.obj[i].vadd(h);
            pt[i].pt = pt;
        }

        pt.pt = pt;

        return pt;
    };

    fuse.prototype.eadd = function(u, v, w){
        var i = 0, len = this.obj.length;
        var pt = new Array(len);
        for(; i < len; ++i){
            pt[i] = this.obj[i].eadd(u.pt[i], v.pt[i], w);
            pt[i].pt = pt;
        }
        
        pt.pt = pt;

        return pt;
    };


    fuse.prototype.vdel = function(v){
        var i = 0, len = this.obj.length;
        for(; i < len; ++i){
            this.obj[i].vdel(v.pt[i]);
        }
    };

    fuse.prototype.edel = function(e){
        var i = 0, len = this.obj.length;
        for(; i < len; ++i){
            this.obj[i].edel(e.pt[i]);
        }
    };

    return fuse;

}