|
"use strict"; |
|
var protobuf = require("../.."); |
|
|
|
|
|
|
|
|
|
|
|
var debug = protobuf.debug = module.exports = {}; |
|
|
|
var codegen = protobuf.util.codegen; |
|
|
|
var debugFnRe = /function ([^(]+)\(([^)]*)\) {/g; |
|
|
|
|
|
function codegen_debug() { |
|
codegen_debug.supported = codegen.supported; |
|
codegen_debug.verbose = codegen.verbose; |
|
var gen = codegen.apply(null, Array.prototype.slice.call(arguments)); |
|
gen.str = (function(str) { return function str_debug() { |
|
return str.apply(null, Array.prototype.slice.call(arguments)).replace(debugFnRe, "function $1($2) {\n\t$1.calls=($1.calls|0)+1"); |
|
};})(gen.str); |
|
return gen; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
debug.unusedTypes = function unusedTypes(ns) { |
|
|
|
|
|
if (!(ns instanceof protobuf.Namespace)) |
|
throw TypeError("ns must be a Namespace"); |
|
|
|
|
|
if (!ns.nested) |
|
return []; |
|
|
|
var unused = []; |
|
for (var names = Object.keys(ns.nested), i = 0; i < names.length; ++i) { |
|
var nested = ns.nested[names[i]]; |
|
if (nested instanceof protobuf.Type) { |
|
var calls = (nested.encode.calls|0) |
|
+ (nested.decode.calls|0) |
|
+ (nested.verify.calls|0) |
|
+ (nested.toObject.calls|0) |
|
+ (nested.fromObject.calls|0); |
|
if (!calls) |
|
unused.push(nested); |
|
} else if (nested instanceof protobuf.Namespace) |
|
Array.prototype.push.apply(unused, unusedTypes(nested)); |
|
} |
|
return unused; |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
debug.enable = function enable() { |
|
protobuf.util.codegen = codegen_debug; |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
debug.disable = function disable() { |
|
protobuf.util.codegen = codegen; |
|
}; |
|
|