コード例 #1
0
ファイル: UnknownType.cpp プロジェクト: denisw/soyac
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
UnresolvedSimpleNameExpression::UnresolvedSimpleNameExpression(const Name& name)
    : mName(name)
{
    assert (name.isSimple());
}
コード例 #3
0
ファイル: DeclaredEntity.cpp プロジェクト: denisw/soyac
DeclaredEntity::DeclaredEntity(const Name& name)
    : NamedEntity(name)
{
    assert (name.isSimple());
}