diff options
author | Alessio Vanni <vannilla@firemail.cc> | 2020-08-22 17:06:39 +0200 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2022-04-06 04:31:19 +0800 |
commit | 415f3d09621bfabfe379a0038ce50d4e887a8f07 (patch) | |
tree | 906ffb0304ba447a697002d5cc52ef5cbc3a733a /lib/RowSnapshot.jsm | |
parent | 096250c53aebeea35a117143c02893343621d0ad (diff) | |
download | ematrix-415f3d09621bfabfe379a0038ce50d4e887a8f07.tar.lz ematrix-415f3d09621bfabfe379a0038ce50d4e887a8f07.tar.xz ematrix-415f3d09621bfabfe379a0038ce50d4e887a8f07.zip |
Move RowSnapshot into a module Preparation for future changes
Signed-off-by: Jesús <heckyel@hyperbola.info>
Diffstat (limited to 'lib/RowSnapshot.jsm')
-rw-r--r-- | lib/RowSnapshot.jsm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/RowSnapshot.jsm b/lib/RowSnapshot.jsm new file mode 100644 index 0000000..edc6bc9 --- /dev/null +++ b/lib/RowSnapshot.jsm @@ -0,0 +1,58 @@ +/******************************************************************************* + + ηMatrix - a browser extension to black/white list requests. + Copyright (C) 2014-2019 Raymond Hill + Copyright (C) 2019-2020 Alessio Vanni + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://gitlab.com/vannilla/ematrix + uMatrix Home: https://github.com/gorhill/uMatrix +*/ + +'use strict'; + +// Apparently, for this specific data structure using a constructor is +// faster than an object literal. +// I don't really believe it, but let's keep things as they are. +// Now a module to keep things more organized (might make things slower.) + +var EXPORTED_SYMBOLS = ['RowSnapshot']; + +var RowSnapshot = function (matrix, src, dest, domain) { + this.domain = domain; + this.temporary = matrix.tMatrix.evaluateRowZXY(src, dest); + this.permanent = matrix.pMatrix.evaluateRowZXY(src, dest); + this.counts = RowSnapshot.counts(matrix).slice(); + this.totals = RowSnapshot.counts(matrix).slice(); +}; + +RowSnapshot.memoizedCounts = undefined; + +RowSnapshot.counts = function (matrix) { + if (RowSnapshot.memoizedCounts !== undefined) { + return RowSnapshot.memoizedCounts; + } + + let aa = []; + let n = matrix.Matrix.columnHeaderIndices.size; + + for (let i=0; i<n; ++i) { + aa[i] = 0; + } + + RowSnapshot.memoizedCounts = aa; + + return aa; +}; |