/usr/lib/bouml/xmi2import/149762.bodies is in bouml-plugouts-src 4.21-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | class ClassInstance
!!!238338.cpp!!! init() : void
UmlItem::declareFct("ownedmember", "uml:InstanceSpecification", &importIt);
UmlItem::declareFct("packagedelement", "uml:InstanceSpecification", &importIt);
!!!238210.cpp!!! importIt(inout in : FileIn, inout token : Token, inout where : UmlItem) : void
where = where->container(aClassInstance, token, in); // can't be null
ClassInstance * cli = new ClassInstance;
cli->id = token.xmiId();
cli->name = token.valueOf("name");
cli->classifierId = token.valueOf("classifier");
cli->where = where;
if (! token.closed()) {
QCString k = token.what();
const char * kstr = k;
while (in.read(), !token.close(kstr)) {
QCString s = token.what();
if (s == "classifier")
cli->classifierId = token.xmiIdref();
else if (s == "slot") {
cli->bindings.append(Slot());
cli->bindings.last().importIt(in, token);
}
else if (! token.closed())
in.finish(s);
}
}
if (cli->classifierId.isEmpty()) {
in.warning("classifier missing for class instance '" + cli->id + "', bypass it");
delete cli;
}
else
All.append(cli);
!!!239618.cpp!!! solveThem() : void
// first create instances because an instance may be referenced by
// an other to set the value of a relation
ClassInstance * cli;
QList<UmlClassInstance> insts;
for (cli = All.first(); cli != 0; cli = All.next()) {
QMap<QCString, UmlItem *>::Iterator it;
it = UmlItem::All.find(cli->classifierId);
if (it == UmlItem::All.end()) {
if (!FileIn::isBypassedId(cli->classifierId))
UmlCom::trace("class instance : unknown classifier reference '" +
cli->classifierId + "'<br>");
}
else if ((*it)->kind() != aClass)
UmlCom::trace("class instance : classifier '" + cli->classifierId +
"' is not a class<br>");
else {
UmlClassInstance * inst =
UmlBaseClassInstance::create(cli->where, cli->name, (UmlClass *) *it);
if (inst == 0)
UmlCom::trace("cannot create class instance '" + cli->id + "'<br>");
else {
UmlItem::All.insert(cli->id, inst);
}
}
}
// set attribute ans relation values
while (! All.isEmpty()) {
QMap<QCString, UmlItem *>::Iterator it;
cli = All.take(0);
it = UmlItem::All.find(cli->id);
if (it != UmlItem::All.end()) {
// class instance ok
UmlClassInstance * inst = (UmlClassInstance *) *it;
QValueList<Slot> & l = cli->bindings;
QValueList<Slot>::Iterator itsl;
for (itsl = l.begin(); itsl != l.end(); ++itsl) {
Slot & slot = *itsl;
it = UmlItem::All.find(slot.featureId);
if (it == UmlItem::All.end()) {
if (!FileIn::isBypassedId(slot.featureId))
UmlCom::trace("class instance reference '" + cli->id +
"' : unknown slot feature reference '" +
slot.featureId + "'<br>");
}
else if ((*it)->kind() == anAttribute) {
if (! inst->set_AttributeValue((UmlAttribute *) *it, slot.value))
UmlCom::trace("class instance reference '" + cli->id +
"' doesn't have attribute '" + (*it)->name() + "'<br>");
}
else if ((*it)->kind() == aRelation) {
UmlRelation * rel = (UmlRelation *) *it;
it = UmlItem::All.find(slot.valueId);
if (it == UmlItem::All.end()) {
if (!FileIn::isBypassedId(slot.valueId))
UmlCom::trace("class instance reference '" + cli->id +
"': unknown class instance reference '" +
slot.valueId + "'<br>");
}
else if ((*it)->kind() != aClassInstance)
UmlCom::trace("class instance reference '" + cli->id +
"': value reference '" + slot.valueId +
"' is not a class instance<br>");
else if (! inst->add_Relation(rel, (UmlClassInstance *) *it))
UmlCom::trace("class instance reference '" + cli->id +
"' : cannot set value for relation reference '" +
slot.featureId + "'<br>");
}
else
UmlCom::trace("class instance : slot feature reference '" +
slot.featureId +
"' is not an attribute nor a relation<br>");
}
}
delete cli;
}
|