本文整理汇总了C++中CStr::Change方法的典型用法代码示例。如果您正苦于以下问题:C++ CStr::Change方法的具体用法?C++ CStr::Change怎么用?C++ CStr::Change使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CStr
的用法示例。
在下文中一共展示了CStr::Change方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Eval
void qObjDef::Eval(qCtx *ctx, qStr *out, qArgAry *args)
{
AddRef();
try {
qCtxTmp tmpCtx(ctx);
int i, an = myArgNames.Count();
int mapcnt = min(an,args->Count());
for (i = 0; i < mapcnt; ++i) {
if (myArgNames[i].Length() > 0) {
CStr s = args->GetAt(i);
CStr n = myArgNames[i]; //n.Change();
if (!n.IsEmpty()) {
if (myQuoted[i] == dParsed ) {
qObjParsed *p = new qObjParsed(s);
tmpCtx.MapObj(p, n);
} else if (myQuoted[i] == dQuoted) {
tmpCtx.MapObj(s, n);
args->SetAt(i, s);
} else if (myQuoted[i] == dObjRef) {
qObj *obj;
args->SetAt(i,s);
if (ctx->Find(&obj, s)) {
tmpCtx.MapObj(new qObjByRef(obj, false), n);
}
} else {
args->SetAt(i, s);
tmpCtx.MapObj(s, n);
}} else {
args->SetAt(i, s);
}
}
}
for (; i < an; ++i) {
if (myArgNames[i].Length() > 0) {
CStr n = myArgNames[i]; n.Change();
if (!n.IsEmpty())
tmpCtx.MapObj(CStr::Null, n);
}
}
for (; i < args->Count(); ++i) {
args->SetAt(i,(*args)[i]);
}
qObjDefArgs *inst = new qObjDefArgs(this, args);
tmpCtx.MapObj(inst, "arg");
tmpCtx.MapObj(args->Count(), "num-args");
tmpCtx.MapObj(args->Count(), "argc");
// *** comp
//tmpCtx.Parse(&qStrReadBuf(myBody), out);
qStrReadBuf rTmp(myBody);
RunCompiled(&tmpCtx, &rTmp, out);
} catch (qCtxExAbort ex) {
throw ex;
} catch (qCtxEx ex) {
throw ex;
} catch (...) {
ctx->Throw(out, 999, "Core Unhandled exception");
}
Free();
}