private function addRootType(PHP_UML_Metamodel_NamedElement $type, $desc) { if (!PHP_UML_Metamodel_Helper::searchTypeIntoPackage($this->packages, $type->name)) { $this->packages->ownedType[] = $type; $this->addDocTags($type, $desc); } }
/** * Sets the nesting package of a type * * @param PHP_UML_Metamodel_Classifier &$c A classifier * @param PHP_UML_Metamodel_Package $nestingPkg The enclosing package */ private function setNestingPackageOfType(PHP_UML_Metamodel_Classifier &$c, PHP_UML_Metamodel_Package $nestingPkg) { $c->package = $nestingPkg; if (PHP_UML_Metamodel_Helper::searchTypeIntoPackage($c->package, $c->name) === false) { $nestingPkg->ownedType[] =& $c; $this->file->manifested[] =& $c; } else { PHP_UML_Warning::add('Class ' . $c->name . ' already defined, in ' . $this->file->name); } }
/** * Does the type resolution for a given element in a given package * * @param PHP_UML_Metamodel_Package $pkg The nesting package * @param string &$element The element to resolve, provided as a name * @param PHP_UML_Metamodel_Type $context The context (the nesting class/interface, which * is the only element to know the nesting file) */ private function resolveType(PHP_UML_Metamodel_Package $pkg, &$element, PHP_UML_Metamodel_NamedElement $context) { if (empty($element)) { $targetElement = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($this->topPackage, 'mixed'); } else { $targetElement = PHP_UML_Metamodel_Helper::findTypeById($this->topPackage, $element); } if ($targetElement === false) { $targetElement = $this->resolveTypeByUri($element); } if ($targetElement === false) { self::resolutionWarning($element, $context); } else { $element = $targetElement; } }
/** * Does the type resolution for a given element in a given package * * @param PHP_UML_Metamodel_Package $pkg The nesting package * @param string &$element The element to resolve, provided as a name * @param PHP_UML_Metamodel_Type $context The context (the nesting class/interface, which * is the only element to know the nesting file) */ private function resolveType(PHP_UML_Metamodel_Package $pkg, &$element, PHP_UML_Metamodel_NamedElement $context) { // Is there a ns separator (\) in it ? list($pos, $first, $last) = PHP_UML_Metamodel_Helper::getPackagePathParts($element, false); if (!($pos === false)) { $tmpPkg = $this->getPackageByPath($first); if ($tmpPkg === false) { self::resolutionWarning($element, $context); $element = null; } else { // Do we know that type? $_o = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($tmpPkg, $last); if (!($_o === false)) { $element = $_o; } else { self::resolutionWarning($element, $context); //$element = null; } } } else { // Is it in the current package? $_o = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($pkg, $element); if (!($_o === false)) { $element = $_o; } else { // Is it in one of the "default" packages? $found = false; foreach ($this->defaultRepo as $itemPkg) { $_o = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($itemPkg, $element); if (!($_o === false)) { $element = $_o; $found = true; break; } } if (!$found) { self::resolutionWarning($element, $context); //$element = null; } } } }