1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- "use strict";
- var protobuf = require("../..");
-
- /**
- * Debugging utility functions. Only present in debug builds.
- * @namespace
- */
- var debug = protobuf.debug = module.exports = {};
-
- var codegen = protobuf.util.codegen;
-
- var debugFnRe = /function ([^(]+)\(([^)]*)\) {/g;
-
- // Counts number of calls to any generated function
- 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;
- }
-
- /**
- * Returns a list of unused types within the specified root.
- * @param {NamespaceBase} ns Namespace to search
- * @returns {Type[]} Unused types
- */
- debug.unusedTypes = function unusedTypes(ns) {
-
- /* istanbul ignore if */
- if (!(ns instanceof protobuf.Namespace))
- throw TypeError("ns must be a Namespace");
-
- /* istanbul ignore if */
- 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;
- };
-
- /**
- * Enables debugging extensions.
- * @returns {undefined}
- */
- debug.enable = function enable() {
- protobuf.util.codegen = codegen_debug;
- };
-
- /**
- * Disables debugging extensions.
- * @returns {undefined}
- */
- debug.disable = function disable() {
- protobuf.util.codegen = codegen;
- };
|