/** * Traverses expression tree pre-order. * Appends an encoding of each node's match type and path name * to the output stream. */ void PlanCache::encodeKeyForMatch(const MatchExpression* tree, StringBuilder* keyBuilder) const { // Encode match type and path. *keyBuilder << encodeMatchType(tree->matchType()); encodeUserString(tree->path(), keyBuilder); // GEO and GEO_NEAR require additional encoding. if (MatchExpression::GEO == tree->matchType()) { encodeGeoMatchExpression(static_cast<const GeoMatchExpression*>(tree), keyBuilder); } else if (MatchExpression::GEO_NEAR == tree->matchType()) { encodeGeoNearMatchExpression(static_cast<const GeoNearMatchExpression*>(tree), keyBuilder); } // Encode indexability. const IndexabilityDiscriminators& discriminators = _indexabilityState.getDiscriminators(tree->path()); if (!discriminators.empty()) { *keyBuilder << kEncodeDiscriminatorsBegin; // For each discriminator on this path, append the character '0' or '1'. for (const IndexabilityDiscriminator& discriminator : discriminators) { *keyBuilder << discriminator(tree); } *keyBuilder << kEncodeDiscriminatorsEnd; } // Traverse child nodes. // Enclose children in []. if (tree->numChildren() > 0) { *keyBuilder << kEncodeChildrenBegin; } // Use comma to separate children encoding. for (size_t i = 0; i < tree->numChildren(); ++i) { if (i > 0) { *keyBuilder << kEncodeChildrenSeparator; } encodeKeyForMatch(tree->getChild(i), keyBuilder); } if (tree->numChildren() > 0) { *keyBuilder << kEncodeChildrenEnd; } }
void B2Trk(B2ChnlPrms * chnlInst,char dataIn) { B2TrkPrms *trkInst = &(chnlInst->trkInst); // 相关运算 correlation(chnlInst,dataIn); //如果是一个完整的码周期 if (trkInst->oneCircle == 1) { // 鉴相 discriminator(trkInst); //一阶滤波 trkInst->flt_codeLoop = codeLoopFilter(&(trkInst->lpf),trkInst->dis_dll); //二阶滤波 trkInst->flt_carrierLoop = carrierLoopFilter(&(trkInst->lpf),trkInst->dis_pll,trkInst->dis_fll); // 更新跟踪参数 updateTrk(chnlInst); //比特流处理 //subFrameUpdate(chnl); } //↓↓↓↓↓↓ for test↓↓↓↓↓↓↓ if (outflag == 1) { writeToFile(chnlInst->TCAR.phs,(chnlInst->chnlID-1)*11+CAR_PHS_SRC_OUT); writeToFile(chnlInst->TPRN.phs,(chnlInst->chnlID-1)*11+PRN_PHS_SRC_OUT); writeToFile(chnlInst->trkInst.car.phs,(chnlInst->chnlID-1)*11+CAR_PHS_LCL_OUT); writeToFile(chnlInst->trkInst.prn.phs.phsP,(chnlInst->chnlID-1)*11+PRN_PHS_LCL_OUT); } // ↑↑↑↑↑↑for test↑↑↑↑↑↑↑ }