예제 #1
0
UnknownType::UnknownType(const Name& name)
    : Type(Name(name.last()))
{
    if (!name.isSimple())
    {
        /*
         * As we need to support UnknownType instances with qualified names,
         * but NamedEntity's name() method guarantees to return a simple name,
         * we need a small hack: we create auxiliary NamedEntity instances and
         * chain them together with addChild() so that the
         * UnknownType's qualifiedName() method will return the correct
         * full name, while name() will only return the simple name.
         */

        Name::identifiers_iterator it = name.identifiers_begin();
        mQualifiedNameParents.push_back(new NamedEntity(Name(*it)));

        it++;

        for (; it != --name.identifiers_end(); it++)
        {
            NamedEntity* parent = new NamedEntity(Name(*it));

            mQualifiedNameParents.back()->addChild(parent);
            mQualifiedNameParents.push_back(parent);
        }

        mQualifiedNameParents.back()->addChild(this);
    }
}
예제 #2
0
파일: Name.cpp 프로젝트: denisw/soyac
Name
Name::operator+(const Name& other) const
{
    Name ret(identifiers_begin(), identifiers_end());

    ret.mIdentifiers.insert(ret.mIdentifiers.end(),
                            other.identifiers_begin(),
                            other.identifiers_end());

    return ret;
}