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


C++ Interpreter::getImpl方法代码示例

本文整理汇总了C++中Interpreter::getImpl方法的典型用法代码示例。如果您正苦于以下问题:C++ Interpreter::getImpl方法的具体用法?C++ Interpreter::getImpl怎么用?C++ Interpreter::getImpl使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Interpreter的用法示例。


在下文中一共展示了Interpreter::getImpl方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: afterCompletion

void Debugger::afterCompletion(Interpreter& interpreter) {
	InterpreterImpl* impl = interpreter.getImpl().get();
	std::shared_ptr<DebugSession> session = getSession(impl);
	if (!session)
		return;

	Data msg;
	msg.compound["replyType"] = Data("finished", Data::VERBATIM);
	pushData(session, msg);
}
开发者ID:,项目名称:,代码行数:10,代码来源:

示例2: getQualifiedTransBreakpoints

std::list<Breakpoint> getQualifiedTransBreakpoints(Interpreter interpreter, const Arabica::DOM::Element<std::string>& transition, Breakpoint breakpointTemplate) {
	std::list<Breakpoint> breakpoints;

	Arabica::DOM::Element<std::string> source(interpreter.getImpl()->getSourceState(transition));
	Arabica::XPath::NodeSet<std::string> targets = interpreter.getImpl()->getTargetStates(transition);

	for (size_t j = 0; j < targets.size(); j++) {
		Arabica::DOM::Element<std::string> target(targets[j]);

		Breakpoint bp = breakpointTemplate; // copy base as template
		bp.element = transition;
		bp.transSourceId = ATTR(source, "id");
		bp.transTargetId = ATTR(target, "id");
		bp.subject = Breakpoint::TRANSITION;

		breakpoints.push_back(bp);
	}

	return breakpoints;
}
开发者ID:juehv,项目名称:uscxml,代码行数:20,代码来源:Debugger.cpp

示例3: handleTransition

void Debugger::handleTransition(Interpreter& interpreter, const XERCESC_NS::DOMElement* transition, Breakpoint::When when) {
	InterpreterImpl* impl = interpreter.getImpl().get();
	std::shared_ptr<DebugSession> session = getSession(impl);
	if (!session)
		return;
	if (!session->_isRunning)
		return;

	Breakpoint breakpointTemplate;
	breakpointTemplate.when = when;
	std::list<Breakpoint> qualifiedBreakpoints = getQualifiedTransBreakpoints(impl, transition, breakpointTemplate);
	session->checkBreakpoints(qualifiedBreakpoints);
}
开发者ID:,项目名称:,代码行数:13,代码来源:

示例4: testDOMUtils

void testDOMUtils() {

	const char* xml =
	    "<scxml>"
	    "   <state doc=\"1\" post=\"1\">"
	    "		<transition doc=\"1\" post=\"1\" />"
	    "   </state>"
	    "   <state doc=\"2\" post=\"3\">"
	    "		<transition doc=\"2\" post=\"3\" />"
	    "       <state doc=\"3\" post=\"2\">"
	    "           <transition doc=\"2\" post=\"2\" />"
	    "       </state>"
	    "   </state>"
	    "   <final id=\"done\" />"
	    "</scxml>";

	size_t index = 1;

	Interpreter interpreter = Interpreter::fromXML(xml, "");
	interpreter.step();
	XERCESC_NS::DOMElement* scxml = interpreter.getImpl()->getDocument()->getDocumentElement();

	{
		// postfix
		std::list<DOMElement*> result;
		DOMUtils::filterElementGeneric({ "state" }, result, scxml, DOMUtils::POSTFIX, true, true);
		index = 1;
		for (auto trans : result) {
			assert(HAS_ATTR(trans, X("post")));
			std::cout << "post: " << ATTR(trans, X("post")) << std::endl;
			assert(ATTR(trans, X("post")) == toStr(index));
			index++;
		}
	}

	{
		// document
		std::list<DOMElement*> result;
		DOMUtils::filterElementGeneric({ "state" }, result, scxml, DOMUtils::DOCUMENT, true, true);
		index = 1;
		for (auto trans : result) {
			assert(HAS_ATTR(trans, X("doc")));
			std::cout << "doc: " << ATTR(trans, X("doc")) << std::endl;
			assert(ATTR(trans, X("doc")) == toStr(index));
			index++;
		}
	}

}
开发者ID:tklab-tud,项目名称:uscxml,代码行数:49,代码来源:test-utils.cpp

示例5: handleInvoke

void Debugger::handleInvoke(Interpreter& interpreter, const XERCESC_NS::DOMElement* invokeElem, const std::string& invokeId, Breakpoint::When when, Breakpoint::Action action) {
	InterpreterImpl* impl = interpreter.getImpl().get();
	std::shared_ptr<DebugSession> session = getSession(impl);
	if (!session)
		return;
	if (!session->_isRunning)
		return;

	Breakpoint breakpointTemplate;
	breakpointTemplate.when = when;
	breakpointTemplate.action = action;
	std::list<Breakpoint> qualifiedBreakpoints = getQualifiedInvokeBreakpoints(impl, invokeElem, invokeId, breakpointTemplate);
	session->checkBreakpoints(qualifiedBreakpoints);

}
开发者ID:,项目名称:,代码行数:15,代码来源:

示例6: handleMicrostep

void Debugger::handleMicrostep(Interpreter& interpreter, Breakpoint::When when) {
	InterpreterImpl* impl = interpreter.getImpl().get();
	std::shared_ptr<DebugSession> session = getSession(impl);
	if (!session)
		return;
	if (!session->_isRunning)
		return;

	std::list<Breakpoint> breakpoints;

	Breakpoint breakpoint;
	breakpoint.when = when;
	breakpoint.subject = Breakpoint::MICROSTEP;
	breakpoints.push_back(breakpoint);

	session->checkBreakpoints(breakpoints);
}
开发者ID:,项目名称:,代码行数:17,代码来源:

示例7: handleEvent

void Debugger::handleEvent(Interpreter& interpreter, const Event& event, Breakpoint::When when) {
	InterpreterImpl* impl = interpreter.getImpl().get();
	std::shared_ptr<DebugSession> session = getSession(impl);
	if (!session)
		return;
	if (!session->_isRunning)
		return;

	std::list<Breakpoint> breakpoints;

	Breakpoint breakpoint;
	breakpoint.when = when;
	breakpoint.eventName = event.name;
	breakpoint.subject = Breakpoint::EVENT;
	breakpoints.push_back(breakpoint);

	session->checkBreakpoints(breakpoints);

}
开发者ID:,项目名称:,代码行数:19,代码来源:

示例8: handleExecutable

void Debugger::handleExecutable(Interpreter& interpreter,
                                const XERCESC_NS::DOMElement* execContentElem,
                                Breakpoint::When when) {
	std::shared_ptr<DebugSession> session = getSession(interpreter.getImpl().get());
	if (!session)
		return;
	if (!session->_isRunning)
		return;

	std::list<Breakpoint> breakpoints;

	Breakpoint breakpoint;
	breakpoint.when = when;
	breakpoint.element = execContentElem;
	breakpoint.executableName = X(execContentElem->getLocalName()).str();
	breakpoint.subject = Breakpoint::EXECUTABLE;
	breakpoints.push_back(breakpoint);

	session->checkBreakpoints(breakpoints);

}
开发者ID:,项目名称:,代码行数:21,代码来源:

示例9: main

int main(int argc, char** argv) {
	try {
		using namespace uscxml;
		using namespace Arabica::DOM;
		using namespace Arabica::XPath;

		const char* xml =
		    "<scxml>"
		    "  <state id=\"atomic\" />"
		    "  <state id=\"compound\">"
		    "    <state id=\"compoundChild1\" />"
		    "    <state id=\"compoundChild2\" />"
		    "  </state>"
		    "  <parallel id=\"parallel\">"
		    "  </parallel>"
		    "</scxml>";

		Interpreter interpreter = Interpreter::fromXML(xml);
		assert(interpreter);
		interpreter.getImpl()->init();

		Element<std::string> atomicState = interpreter.getImpl()->getState("atomic");
		assert(InterpreterImpl::isAtomic(atomicState));
		assert(!InterpreterImpl::isParallel(atomicState));
		assert(!InterpreterImpl::isCompound(atomicState));

		Element<std::string> compoundState = interpreter.getImpl()->getState("compound");
		assert(!InterpreterImpl::isAtomic(compoundState));
		assert(!InterpreterImpl::isParallel(compoundState));
		assert(InterpreterImpl::isCompound(compoundState));

		Element<std::string> parallelState = interpreter.getImpl()->getState("parallel");
		assert(!InterpreterImpl::isAtomic(parallelState));
		assert(InterpreterImpl::isParallel(parallelState));
		assert(!InterpreterImpl::isCompound(parallelState)); // parallel states are not compound!

		NodeSet<std::string> initialState = interpreter.getImpl()->getInitialStates();
		assert(initialState[0] == atomicState);

		NodeSet<std::string> childs = interpreter.getImpl()->getChildStates(compoundState);
		Node<std::string> compoundChild1 = interpreter.getImpl()->getState("compoundChild1");
		Node<std::string> compoundChild2 = interpreter.getImpl()->getState("compoundChild2");
		assert(childs.size() > 0);
		assert(InterpreterImpl::isMember(compoundChild1, childs));
		assert(InterpreterImpl::isMember(compoundChild2, childs));
		assert(!InterpreterImpl::isMember(compoundState, childs));

		assert(InterpreterImpl::isDescendant(compoundChild1, compoundState));

		{
			std::string idrefs("id1");
			std::list<std::string> tokenizedIdrefs = InterpreterImpl::tokenizeIdRefs(idrefs);
			assert(tokenizedIdrefs.size() == 1);
			assert(tokenizedIdrefs.front().compare("id1") == 0);
		}

		{
			std::string idrefs(" id1");
			std::list<std::string> tokenizedIdrefs = InterpreterImpl::tokenizeIdRefs(idrefs);
			assert(tokenizedIdrefs.size() == 1);
			assert(tokenizedIdrefs.front().compare("id1") == 0);
		}

		{
			std::string idrefs(" id1 ");
			std::list<std::string> tokenizedIdrefs = InterpreterImpl::tokenizeIdRefs(idrefs);
			assert(tokenizedIdrefs.size() == 1);
			assert(tokenizedIdrefs.front().compare("id1") == 0);
		}

		{
			std::string idrefs(" \tid1\n ");
			std::list<std::string> tokenizedIdrefs = InterpreterImpl::tokenizeIdRefs(idrefs);
			assert(tokenizedIdrefs.size() == 1);
			assert(tokenizedIdrefs.front().compare("id1") == 0);
		}

		{
			std::string idrefs("id1 id2 id3");
			std::list<std::string> tokenizedIdrefs = InterpreterImpl::tokenizeIdRefs(idrefs);
			assert(tokenizedIdrefs.size() == 3);
			assert(tokenizedIdrefs.front().compare("id1") == 0);
			tokenizedIdrefs.pop_front();
			assert(tokenizedIdrefs.front().compare("id2") == 0);
			tokenizedIdrefs.pop_front();
			assert(tokenizedIdrefs.front().compare("id3") == 0);
		}

		{
			std::string idrefs("\t  id1 \nid2\n\n id3\t");
			std::list<std::string> tokenizedIdrefs = InterpreterImpl::tokenizeIdRefs(idrefs);
			assert(tokenizedIdrefs.size() == 3);
			assert(tokenizedIdrefs.front().compare("id1") == 0);
			tokenizedIdrefs.pop_front();
			assert(tokenizedIdrefs.front().compare("id2") == 0);
			tokenizedIdrefs.pop_front();
			assert(tokenizedIdrefs.front().compare("id3") == 0);
		}

		{
//.........这里部分代码省略.........
开发者ID:vogelsgesang,项目名称:uscxml,代码行数:101,代码来源:test-predicates.cpp


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