Beispiel #1
0
BrowserOperation * BrowserOperation::new_one(QString s, BrowserNode * p)
{
    OperationData * d = new OperationData();
    BrowserOperation * result =
            new BrowserOperation(s, p, d, d->get_ident());

    d->set_browser_node(result, TRUE);

    return result;
}
BrowserOperation * BrowserOperation::new_one(QString s, BrowserNode * p)
{
    OperationData * d = new OperationData();
    BrowserOperation * result =
            new BrowserOperation(s, p, d, d->get_ident());

    d->set_browser_node(result, TRUE);


    QString nameOfClassNode = p->get_name();

    //if constructor
    int lastIndexOfConstructor = 0;
    //leave members other then operations and attributes in place
    while(BrowserNode *node = (BrowserNode *)p->child(lastIndexOfConstructor))
    {
        if(UmlOperation != node->get_type() && UmlAttribute != node->get_type())
        {
            lastIndexOfConstructor++;
        }
        else
            break;
    }
    while(BrowserNode *node = (BrowserNode *)p->child(lastIndexOfConstructor))
    {
        if(nameOfClassNode == node->get_name())
        {
            lastIndexOfConstructor++;
        }
        else
            break;
    }
    if(nameOfClassNode == s)
    {
        p->removeChild(result);
        p->insertChild(lastIndexOfConstructor,result);
    }
    //destructor
    else if(("~" + nameOfClassNode) == s)
    {

        p->removeChild(result);
        p->insertChild(lastIndexOfConstructor,result);
    }


    return result;
}