本文整理汇总了C++中UmlOperation::set_CppBody方法的典型用法代码示例。如果您正苦于以下问题:C++ UmlOperation::set_CppBody方法的具体用法?C++ UmlOperation::set_CppBody怎么用?C++ UmlOperation::set_CppBody使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UmlOperation
的用法示例。
在下文中一共展示了UmlOperation::set_CppBody方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generate
void UmlJunctionPseudoState::generate(UmlClass * machine, UmlClass * anystate, UmlState * state) {
// create an operation because a priori shared
if (_oper.isEmpty())
_oper.sprintf("_junction%d", ++_rank);
UmlClass * cl = state->assocClass();
UmlOperation * junction;
if (((junction = (UmlOperation *) cl->getChild(anOperation, _oper)) == 0) &&
((junction = UmlBaseOperation::create(cl, _oper)) == 0)) {
UmlCom::trace("Error : cannot create operation '" + _oper
+ "' in class '" + cl->name() + "'<br>");
throw 0;
}
junction->defaultDef();
junction->setComment("implement a junction, through an operation because shared, internal");
junction->setType("void", "${type}");
junction->addParam(0, InputOutputDirection, "stm", machine);
junction->setParams("${t0} & ${p0}");
Q3CString body;
const Q3PtrVector<UmlItem> ch = children();
Q3PtrList<UmlTransition> trs;
unsigned index;
for (index = 0; index != ch.count(); index += 1)
if (ch[index]->kind() == aTransition)
// theo mandatory
trs.append((UmlTransition *) ch[index]);
UmlTransition::generate(trs, machine, anystate, state, body, " ", FALSE);
junction->set_CppBody(body);
}
示例2: QCString
UmlOperation * UmlOperation::cpp2Python(UmlClass * python, UmlClass * cpp,
const char * cppname,
const char * pythonname)
{
if (pythonname == 0)
pythonname = cppname;
UmlOperation * from = cpp->get_operation(cppname);
if (from == 0) {
QCString err = QCString("cannot find operation '") +
cppname + QCString("' in class '") + cpp->name()
+ QCString("'<br>\n");
UmlCom::trace(err);
throw 0;
}
UmlOperation * to = UmlBaseOperation::create(python, pythonname);
if (to == 0) {
QCString err = QCString("cannot create operation '") +
pythonname + QCString("' in class '") + python->name()
+ QCString("'<br>\n");
UmlCom::trace(err);
throw 0;
}
UmlCom::trace("add operation " + python->name() + "::" + pythonname + "<br>\n");
to->set_Description(::cpp2Python(from->description()));
to->set_ReturnType(from->returnType());
to->set_isClassMember(from->isClassMember());
to->set_Visibility(from->visibility());
to->set_CppVisibility(from->cppVisibility());
const QValueList<UmlParameter> params = from->params();
unsigned index;
for (index = 0; index != params.count(); index += 1)
to->addParameter(index, params[index]);
const QValueList<UmlTypeSpec> exceptions = from->exceptions();
for (index = 0; index != exceptions.count(); index += 1)
to->addException(index, exceptions[index]);
to->set_isCppVirtual(from->isCppVirtual());
to->set_isCppConst(from->isCppConst());
to->set_isCppInline(from->isCppInline());
to->set_CppDecl(::cpp2Python(from->cppDecl()));
to->set_CppDef(::cpp2Python(from->cppDef()));
to->set_CppBody(::cpp2Python(from->cppBody()));
to->set_isJavaFinal(from->isJavaFinal());
to->set_JavaDef(from->javaDef());
to->set_JavaBody(::cpp2Python(from->javaBody()));
return to;
}
示例3: generate
void UmlTransition::generate(UmlClass * machine, UmlClass * anystate, UmlState * state)
{
if (_already_managed)
return;
Q3CString s = triggerName();
// group transitions having the same trigger
const Q3PtrVector<UmlItem> ch = parent()->children();
unsigned index = ch.findRef(this);
Q3PtrList<UmlTransition> trs;
UmlTransition * tr_no_guard = 0;
if (cppGuard().isEmpty())
tr_no_guard = this;
else
trs.append(this);
while (++index != ch.count()) {
if ((ch[index]->kind() == aTransition) &&
(((UmlTransition *) ch[index])->triggerName() == s)) {
if (!((UmlTransition *) ch[index])->cppGuard().isEmpty())
trs.append((UmlTransition *) ch[index]);
else if (tr_no_guard != 0) {
UmlCom::trace("Error : several transitions from '" + parent()->name()
+ "' don't have guard");
throw 0;
}
else
tr_no_guard = (UmlTransition *) ch[index];
((UmlTransition *) ch[index])->_already_managed = TRUE;
}
}
if (tr_no_guard != 0)
// place it at end
trs.append(tr_no_guard);
// made the trigger
UmlOperation * trg = state->assocClass()->trigger(s, machine, anystate);
Q3CString body;
if (s == "create") {
// manage entry
if (!state->cppEntryBehavior().isEmpty())
body = " _doentry(stm);\n";
}
if (!state->cppDoActivity().isEmpty())
// state do activity before each event except create
body += " _do(stm);\n";
bool completion = (s == "_completion");
if (!completion && state->isLeaf() && state->hasCompletion())
// manage completion
body += " if (_completion(stm)) return;\n";
UmlTransition::generate(trs, machine, anystate, state,
body, " ", completion);
trg->set_CppBody(body);
}