这篇教程C++ subst函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中subst函数的典型用法代码示例。如果您正苦于以下问题:C++ subst函数的具体用法?C++ subst怎么用?C++ subst使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了subst函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: substExpr const*Substitution::subst(Abs const* e) const{ Var const* v = cast<Var>(subst(e->var())); Expr const* d = subst(e->expr()); return new Abs(e->type(), v, d);}
开发者ID:Jenny-fa,项目名称:lingo,代码行数:7,
示例2: resultexpr_ref sym_expr::accept(expr* e) { ast_manager& m = m_t.get_manager(); expr_ref result(m); switch (m_ty) { case t_pred: { var_subst subst(m); subst(m_t, 1, &e, result); break; } case t_char: SASSERT(m.get_sort(e) == m.get_sort(m_t)); result = m.mk_eq(e, m_t); break; case t_range: { bv_util bv(m); rational r1, r2, r3; unsigned sz; if (bv.is_numeral(m_t, r1, sz) && bv.is_numeral(e, r2, sz) && bv.is_numeral(m_s, r3, sz)) { result = m.mk_bool_val((r1 <= r2) && (r2 <= r3)); } else { result = m.mk_and(bv.mk_ule(m_t, e), bv.mk_ule(e, m_s)); } break; } } return result;}
开发者ID:vietlq,项目名称:z3,代码行数:28,
示例3: hdLateq* DocCompiler::compileLateq(Tree L, Lateq* compiledEqn){ // cerr << "Documentator : compileLateq : L = "; printSignal(L, stdout, 0); cerr << endl; fLateq = compiledEqn; ///< Dynamic field ! int priority = 0; for(int i = 0; isList(L); L = tl(L), i++) { Tree sig = hd(L); Tree id; if(getSigNickname(sig, id)) { // cerr << "Documentator : compileLateq : NICKNAMEPROPERTY = " << tree2str(id) << endl; fLateq->addOutputSigFormula(subst("$0(t) = $1", tree2str(id), CS(sig, priority), docT(i))); } else { // cerr << "Documentator : compileLateq : NO NICKNAMEPROPERTY" << endl; if(fLateq->outputs() == 1) { fLateq->addOutputSigFormula(subst("y(t) = $0", CS(sig, priority))); gDocNoticeFlagMap["outputsig"] = true; } else { fLateq->addOutputSigFormula(subst("$0(t) = $1", getFreshID("y"), CS(sig, priority))); gDocNoticeFlagMap["outputsigs"] = true; } } } return fLateq;}
开发者ID:Ace17,项目名称:faust,代码行数:35,
示例4: CS/** * Generate the equation of a write table, which content is time dependent. * It is basically a signal of vectors. */string DocCompiler::generateDocWriteTbl(Tree /*tbl*/, Tree size, Tree isig, Tree widx, Tree wsig){ string vname, ctype; string init = CS(isig, 0); int n; if(!isSigInt(size, &n)) { cerr << "error in DocCompiler::generateDocWriteTbl() : " << *size << " is not an integer expression and can't be used as a table size' " << endl; } // allocate a name w_i for the table getTypedNames(getCertifiedSigType(isig), "w", ctype, vname); // add a comment on tables in the notice gDocNoticeFlagMap["tablesigs"] = true; // describe the table equation string ltqRWTableDef; ltqRWTableDef += subst("$0(t)[i] = /n", vname); ltqRWTableDef += "//left//{//begin{array}{ll}/n"; ltqRWTableDef += subst("$0 & //mbox{if //,} t < 0 //mbox{//, and //,} i //in [0,$1] /////n", replaceTimeBy(init, 'i'), T(n - 1)); ltqRWTableDef += subst("$0 & //mbox{if //,} i = $1 /////n", CS(wsig, 0), CS(widx, 0)); ltqRWTableDef += subst("$0(t//!-//!1)[i] & //mbox{otherwise} /////n", vname); ltqRWTableDef += "//end{array}//right."; // add the table equation fLateq->addRWTblSigFormula(ltqRWTableDef); // w(t) = initsig(t) // note that the name of the table can never be used outside an sigDocTableAccess return vname;}
开发者ID:Ace17,项目名称:faust,代码行数:39,
示例5: pxl_impl_process/* Parse a cursor-full of data */static int /* ret 0 or +ve if ok, else -ve error code */pxl_impl_process( pl_interp_instance_t *instance, /* interp instance to process data job in */ stream_cursor_read *cursor /* data to process */){ pxl_interp_instance_t *pxli = (pxl_interp_instance_t *)instance; int code; /* Process some input */ switch (pxli->processState) { case PSDone: return e_ExitLanguage; case PSHeader: /* Input stream header */ code = px_stream_header_process(&pxli->headerState, cursor); if (code == 0) break; /* need more input later */ else /* stream header termination */ if (code < 0) { pxli->processState = PSDone; return code; /* return error */ } else { code = 0; pxli->processState = PSXL; } /* fall thru to PSXL */ case PSXL: /* PCL XL */ code = px_process(pxli->st, pxli->pxs, cursor); if ( code == e_ExitLanguage ) { pxli->processState = PSDone; code = 0; } else if ( code == errorWarningsReported ) { /* The parser doesn't skip over the EndSession */ /* operator, because an "error" occurred. */ cursor->ptr++; } else if (code < 0) /* Map library error codes to PCL XL codes when possible. */ switch ( code ) {#define subst(gs_error, px_error)/ case gs_error: code = px_error; break subst(gs_error_invalidfont, errorIllegalFontData); subst(gs_error_limitcheck, errorInternalOverflow); subst(gs_error_nocurrentpoint, errorCurrentCursorUndefined); subst(gs_error_rangecheck, errorIllegalAttributeValue); subst(gs_error_VMerror, errorInsufficientMemory);#undef subst } break; /* may need more input later */ } return code;}
开发者ID:ststeiger,项目名称:ghostsvg,代码行数:61,
示例6: preparevoid VectorCompiler::compileMultiSignal (Tree L){ //contextor recursivness(0); L = prepare(L); // optimize, share and annotate expression for (int i = 0; i < fClass->inputs(); i++) { fClass->addZone3(subst("$1* input$0 = &input[$0][index];", T(i), xfloat())); } for (int i = 0; i < fClass->outputs(); i++) { fClass->addZone3(subst("$1* output$0 = &output[$0][index];", T(i), xfloat())); } fClass->addSharedDecl("fullcount"); fClass->addSharedDecl("input"); fClass->addSharedDecl("output"); for (int i = 0; isList(L); L = tl(L), i++) { Tree sig = hd(L); fClass->openLoop("count"); fClass->addExecCode(subst("output$0[i] = $2$1;", T(i), CS(sig), xcast())); fClass->closeLoop(sig); } generateUserInterfaceTree(prepareUserInterfaceTree(fUIRoot)); generateMacroInterfaceTree("", prepareUserInterfaceTree(fUIRoot)); if (fDescription) { fDescription->ui(prepareUserInterfaceTree(fUIRoot)); }}
开发者ID:gauravchawla03,项目名称:Stanford,代码行数:29,
示例7: tree2intvoid Description::addGroup(int level, Tree t){ Tree label, elements, varname, sig; const char* groupnames[] = { "vgroup", "hgroup", "tgroup" }; if(isUiFolder(t, label, elements)) { const int orient = tree2int(left(label)); addLayoutLine(level, subst("<group type=/"$0/">", groupnames[orient])); addLayoutLine(level + 1, subst("<label>$0</label>", checkNullLabel(t, xmlize(tree2str(right(label))), false))); while(!isNil(elements)) { addGroup(level + 1, right(hd(elements))); elements = tl(elements); } addLayoutLine(level, "</group>"); } else if(isUiWidget(t, label, varname, sig)) { int w = addWidget(label, varname, sig); addLayoutLine(level, subst("<widgetref id=/"$0/" />", T(w))); } else { fprintf(stderr, "error in user interface generation 2/n"); exit(1); }}
开发者ID:Ace17,项目名称:faust,代码行数:34,
示例8: read_cpp_token/* * Reads a token from a given preprocessing context, expands it if macro, and * returns it. */static Token *expand_one(CppContext *ctx) { Token *tok = read_cpp_token(ctx); if (!tok) return NULL; if (tok->toktype != TOKTYPE_IDENT) return tok; String *name = tok->val.str; Macro *macro = dict_get(ctx->defs, name); if (!macro) return tok; if (list_in(tok->hideset, name)) return tok; switch (macro->type) { case MACRO_OBJ: { List *ts = subst(ctx, macro, make_list(), list_union1(tok->hideset, name)); pushback(ctx, ts); return expand_one(ctx); } case MACRO_FUNC: { List *args = read_args(ctx, macro); Token *rparen = read_cpp_token(ctx); List *hideset = list_union1(list_intersect(tok->hideset, rparen->hideset), name); List *ts = subst(ctx, macro, args, hideset); pushback(ctx, ts); return expand_one(ctx); } case MACRO_SPECIAL: macro->fn(ctx, tok); return expand_one(ctx); } panic("should not reach here");}
开发者ID:rui314,项目名称:8cc-old,代码行数:36,
|