CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
encoder.js104 linesDownload Raw Back to src
1"use strict";2module.exports = encoder;3 4var Enum     = require("./enum"),5    types    = require("./types"),6    util     = require("./util");7 8/**9 * Generates a partial message type encoder.10 * @param {Codegen} gen Codegen instance11 * @param {Field} field Reflected field12 * @param {number} fieldIndex Field index13 * @param {string} ref Variable reference14 * @returns {Codegen} Codegen instance15 * @ignore16 */17function genTypePartial(gen, field, fieldIndex, ref) {18    return field.delimited19        ? gen("types[%i].encode(%s,w.uint32(%i),q+1).uint32(%i)", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)20        : gen("types[%i].encode(%s,w.uint32(%i).fork(),q+1).ldelim()", fieldIndex, ref, (field.id << 3 | 2) >>> 0);21}22 23/**24 * Generates an encoder specific to the specified message type.25 * @param {Type} mtype Message type26 * @returns {Codegen} Codegen instance27 */28function encoder(mtype) {29    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */30    var gen = util.codegen(["m", "w", "q"], mtype.name + "$encode")31    ("if(!w)")32        ("w=Writer.create()")33    ("if(q===undefined)q=0")34    ("if(q>util.recursionLimit)")35        ("throw Error(\"max depth exceeded\")");36 37    var i, ref;38 39    // "when a message is serialized its known fields should be written sequentially by field number"40    var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);41 42    for (var i = 0; i < fields.length; ++i) {43        var field    = fields[i].resolve(),44            index    = mtype._fieldsArray.indexOf(field),45            type     = field.resolvedType instanceof Enum ? "int32" : field.type,46            wireType = types.basic[type];47            ref      = "m" + util.safeProp(field.name);48 49        // Map fields50        if (field.map) {51            gen52    ("if(%s!=null&&Object.hasOwnProperty.call(m,%j)){", ref, field.name) // !== undefined && !== null53        ("for(var ks=Object.keys(%s),i=0;i<ks.length;++i){", ref)54            ("w.uint32(%i).fork().uint32(%i).%s(ks[i])", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);55            if (wireType === undefined) gen56            ("types[%i].encode(%s[ks[i]],w.uint32(18).fork(),q+1).ldelim().ldelim()", index, ref); // can't be groups57            else gen58            (".uint32(%i).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref);59            gen60        ("}")61    ("}");62 63            // Repeated fields64        } else if (field.repeated) { gen65    ("if(%s!=null&&%s.length){", ref, ref); // !== undefined && !== null66 67            // Packed repeated68            if (field.packed && types.packed[type] !== undefined) { gen69 70        ("w.uint32(%i).fork()", (field.id << 3 | 2) >>> 0)71        ("for(var i=0;i<%s.length;++i)", ref)72            ("w.%s(%s[i])", type, ref)73        ("w.ldelim()");74 75            // Non-packed76            } else { gen77 78        ("for(var i=0;i<%s.length;++i)", ref);79                if (wireType === undefined)80            genTypePartial(gen, field, index, ref + "[i]");81                else gen82            ("w.uint32(%i).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref);83 84            } gen85    ("}");86 87        // Non-repeated88        } else {89            if (field.optional) gen90    ("if(%s!=null&&Object.hasOwnProperty.call(m,%j))", ref, field.name); // !== undefined && !== null91 92            if (wireType === undefined)93        genTypePartial(gen, field, index, ref);94            else gen95        ("w.uint32(%i).%s(%s)", (field.id << 3 | wireType) >>> 0, type, ref);96 97        }98    }99 100    return gen101    ("return w");102    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */103}104 
basant307/AI_Governance_Project · CoolFace