本文整理汇总了C++中Interaction::type方法的典型用法代码示例。如果您正苦于以下问题:C++ Interaction::type方法的具体用法?C++ Interaction::type怎么用?C++ Interaction::type使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Interaction
的用法示例。
在下文中一共展示了Interaction::type方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parse
void Parser::parse( const QString &xml )
{
QDomDocument doc( "kwscl" );
QString errorMsg;
int errorLine, errorColumn;
bool ok = doc.setContent( xml, true, &errorMsg, &errorLine, &errorColumn );
if ( !ok ) {
qDebug( "Error parsing wscl (%d:%d) %s", errorLine, errorColumn, errorMsg.latin1() );
return;
}
QDomNodeList nodes = doc.elementsByTagName( "Conversation" );
if ( nodes.count() <= 0 ) {
qDebug( "No conversation tag found in wscl data" );
return;
}
QDomElement conversationElement = nodes.item( 0 ).toElement();
mConversation.setName( conversationElement.attribute( "name" ) );
mConversation.setVersion( conversationElement.attribute( "version" ) );
mConversation.setDescription( conversationElement.attribute( "description" ) );
mConversation.setNameSpace( conversationElement.attribute( "targetNamespace" ) );
mConversation.setSchema( conversationElement.attribute( "hrefSchema" ) );
mConversation.setInitialInteraction( conversationElement.attribute( "initialInteraction" ) );
mConversation.setFinalInteraction( conversationElement.attribute( "finalInteraction" ) );
QDomNode node = conversationElement.firstChild();
while ( !node.isNull() ) {
QDomElement element = node.toElement();
if ( !element.isNull() ) {
if ( element.tagName() == "ConversationInteractions" ) {
Interaction::List interactions;
QDomNode interactionNode = element.firstChild();
while ( !interactionNode.isNull() ) {
QDomElement interactionElement = interactionNode.toElement();
if ( !interactionElement.isNull() ) {
if ( interactionElement.tagName() != "Interaction" ) {
qDebug( "Expected tag name 'Interaction', got '%s'", interactionElement.tagName().latin1() );
continue;
}
Interaction interaction;
interaction.setId( interactionElement.attribute( "id" ) );
const QString type = interactionElement.attribute( "interactionType" );
if ( type == "ReceiveSend" )
interaction.setType( Interaction::ReceiveSend );
else if ( type == "SendReceive" )
interaction.setType( Interaction::SendReceive );
else if ( type == "Receive" )
interaction.setType( Interaction::Receive );
else if ( type == "Send" )
interaction.setType( Interaction::Send );
else if ( type == "Empty" )
interaction.setType( Interaction::Empty );
else
qDebug( "Unknown interaction type '%s'", type.latin1() );
XMLDocument::List inputDocuments;
XMLDocument::List outputDocuments;
XMLDocument inputDocument;
XMLDocument outputDocument;
QDomNode contentNode = interactionElement.firstChild();
while ( !contentNode.isNull() ) {
QDomElement contentElement = contentNode.toElement();
if ( !contentElement.isNull() ) {
const QString tagName = contentElement.tagName();
if ( tagName == "InboundXMLDocument" ) {
XMLDocument document;
document.setId( contentElement.attribute( "id" ) );
document.setSchema( contentElement.attribute( "hrefSchema" ) );
inputDocuments.append( document );
inputDocument = document;
} else if ( tagName == "OutboundXMLDocument" ) {
XMLDocument document;
document.setId( contentElement.attribute( "id" ) );
document.setSchema( contentElement.attribute( "hrefSchema" ) );
outputDocuments.append( document );
outputDocument = document;
}
}
contentNode = contentNode.nextSibling();
}
switch ( interaction.type() ) {
case Interaction::ReceiveSend:
{
ReceiveSendDocument document;
document.setInputDocument( inputDocument );
document.setOutputDocuments( outputDocuments );
interaction.setReceiveSendDocument( document );
}
break;
case Interaction::SendReceive:
//.........这里部分代码省略.........
示例2: run
void InteractionProcessor::run()
{
std::stack<Interaction> undoStack;
std::stack<Interaction> redoStack;
view.refresh();
while (true)
{
Interaction interaction = interactionReader.nextInteraction();
if (interaction.type() == InteractionType::quit)
{
break;
}
else if (interaction.type() == InteractionType::undo)
{
if (!undoStack.empty())
{
Interaction undoInteraction = undoStack.top();
Command* command = undoInteraction.command();
try
{
undoStack.pop();
redoStack.push(undoInteraction);
command->undo(model);
model.clearErrorMessage();
}
catch(EditorException& e)
{
model.setErrorMessage(e.getReason());
delete command;
}
view.refresh();
}
}
else if (interaction.type() == InteractionType::redo)
{
if(!redoStack.empty())
{
Interaction redoInteraction = redoStack.top();
Command* command = redoInteraction.command();
try
{
redoStack.pop();
undoStack.push(redoInteraction);
command->execute(model);
model.clearErrorMessage();
}
catch(EditorException& e)
{
model.setErrorMessage(e.getReason());
delete command;
}
view.refresh();
}
}
else if (interaction.type() == InteractionType::command)
{
Command* command = interaction.command();
try
{
command->execute(model);
undoStack.push(interaction);
model.clearErrorMessage();
}
catch (EditorException& e)
{
model.setErrorMessage(e.getReason());
delete command;
}
view.refresh();
// Note that you'll want to be more careful about when you delete
// commands once you implement undo and redo. For now, since
// neither is implemented, I've just deleted it immediately
// after executing it. You'll need to wait to delete it until
// you don't need it anymore.
//delete command;
}
}
while(!undoStack.empty())
{
Interaction undoInteraction = undoStack.top();
delete undoInteraction.command();
//.........这里部分代码省略.........
示例3: run
void InteractionProcessor::run()
{
view.refresh();
std::vector<Command*> undo;
std::vector<Command*> redo;
while (true)
{
Interaction interaction = interactionReader.nextInteraction();
Command* command = interaction.command();
Command* undoCommand = nullptr;
Command* redoCommand = nullptr;
if (interaction.type() == InteractionType::quit)
{
for (auto i = undo.begin(); i < undo.end(); i++)
{
delete *i;
}
for (auto j = redo.begin(); j < redo.end(); j++)
{
delete *j;
}
delete undoCommand;
delete redoCommand;
delete command;
break;
}
else if (interaction.type() == InteractionType::undo)
{
if (undo.size() > 0)
{
undoCommand = undo.back();
try
{
undoCommand->undo(model);
}
catch (EditorException& e)
{
model.setErrorMessage(e.getReason());
}
redo.push_back(undoCommand);
undo.pop_back();
}
view.refresh();
}
else if (interaction.type() == InteractionType::redo)
{
if (redo.size() > 0)
{
redoCommand = redo.back();
try
{
redoCommand->execute(model);
}
catch (EditorException& e)
{
model.setErrorMessage(e.getReason());
}
undo.push_back(redoCommand);
redo.pop_back();
}
view.refresh();
}
else if (interaction.type() == InteractionType::command)
{
// Command* command = interaction.command();
undo.push_back(command);
try
{
command->execute(model);
model.clearErrorMessage();
}
catch (EditorException& e)
{
model.setErrorMessage(e.getReason());
}
view.refresh();
// Note that you'll want to be more careful about when you delete
// commands once you implement undo and redo. For now, since
// neither is implemented, I've just deleted it immediately
//.........这里部分代码省略.........