本文整理汇总了C++中Energy::Clone方法的典型用法代码示例。如果您正苦于以下问题:C++ Energy::Clone方法的具体用法?C++ Energy::Clone怎么用?C++ Energy::Clone使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Energy
的用法示例。
在下文中一共展示了Energy::Clone方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CompileMsg
//.........这里部分代码省略.........
BeginErrorState(Info,ERROR_TYPE_PART);
}
}
break;
case LENGTH_PART:
{
Info->HeaderStr += ch;
// ch ->[0-9] 并且 单个数据长度不能超过10位整数
if(isdigit(ch) && Info->Buffer.size() < Info->DataLen)
{
Info->Buffer += ch;
}
else if(ch == '@' && Info->Buffer.size() >0)
{
Info->DataLen = atol(Info->Buffer.c_str());
Info->Buffer = "";
//初步检查长度的合理性
if(Info->DataType == TYPE_PIPELINE)
{
if (Info->ParentPipe == this)
{
}
if(Info->DataLen == 0){
bCompleteOneData = TRUE;
}else{
ePipeline NotifData;
NotifData.PushInt(Info->DataLen); //总长度
NotifData.PushInt(0); //相对于Parent的完成进度,0则表示本Pipe刚开始
NotifData.Push_Directly(Info->Data->Clone());
m_Parent->NotifyLinkerState(this,LINKER_RECEIVE_STEP,NotifData);
//对于管道,得到长度以后即压入堆栈,因为它的数据其实是其它数据的集合
Info->HeaderStr="";
ePipeline* Parent = (ePipeline*)Info->Data;
assert(Parent);
RevContextInfo* NewInfo = new RevContextInfo(Parent);
m_ContextStack.push_front(NewInfo);
Info = NewInfo;
}
break;
}else if(Info->DataType == TYPE_NULL)
{
if(Info->DataLen != 0){
BeginErrorState(Info,ERROR_LENGTH_PART);
}else{
bCompleteOneData = TRUE;
}
}
else if(Info->DataLen ==0 )
{
if(Info->DataType == TYPE_STRING){ //允许为0
bCompleteOneData = TRUE;
}
else{// 其他数据不能为0 error
BeginErrorState(Info,ERROR_LENGTH_PART);
}
}else if ((Info->DataType==TYPE_INT || Info->DataType==TYPE_FLOAT) && Info->DataLen>20)