当前位置: 首页>>代码示例>>C++>>正文


C++ CStr::Change方法代码示例

本文整理汇总了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();
}
开发者ID:BackupTheBerlios,项目名称:smx-svn,代码行数:68,代码来源:core.cpp


注:本文中的CStr::Change方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。