Ejemplo n.º 1
0
void StateData::read(char * & st, char * & k) {
  BasicData::read(st, k);	// updates k
  uml.read(st, k, "uml");	// updates k
  cpp.read(st, k, "cpp");	// updates k
  java.read(st, k, "java");	// updates k
  
  if (!strcmp(k, "active")) {
    is_active = TRUE;
    k = read_keyword(st);
  }
  
  if (! strcmp(k, "specification")) {
    set_specification(BrowserOperation::read_ref(st));
    k = read_keyword(st);
  }
  
  if (! strcmp(k, "reference")) {
    set_reference(BrowserState::read_ref(st));
    k = read_keyword(st);
  }
}
Ejemplo n.º 2
0
bool ActivityData::tool_cmd(ToolCom * com, const char * args,
                            BrowserNode * bn,
                            const QString & comment)
{
    if (((unsigned char) args[-1]) >= firstSetCmd) {
        if (!bn->is_writable() && !root_permission())
            com->write_ack(FALSE);
        else {
            switch ((unsigned char) args[-1]) {
            case setUmlEntryBehaviorCmd:
                uml_condition.first = args;
                break;

            case setUmlExitBehaviorCmd:
                uml_condition.second = args;
                break;

            case setCppEntryBehaviorCmd:
                cpp_condition.first = args;
                break;

            case setCppExitBehaviorCmd:
                cpp_condition.second = args;
                break;

            case setJavaEntryBehaviorCmd:
                java_condition.first = args;
                break;

            case setJavaExitBehaviorCmd:
                java_condition.second = args;
                break;

            case setReadOnlyCmd:
                read_only = (*args != 0);
                break;

            case setSingleExecutionCmd:
                single_execution = (*args != 0);
                break;

            case setDefCmd:
                set_specification((BrowserOperation *) com->get_id(args));
                break;

            case setActiveCmd:
                is_active = (*args != 0);
                break;

            case setConstraintCmd:
                constraint = args;
                break;

            default:
                return BasicData::tool_cmd(com, args, bn, comment);
            }

            // ok case
            bn->package_modified();
            modified();
            com->write_ack(TRUE);
        }
    }
    else
        return BasicData::tool_cmd(com, args, bn, comment);

    return TRUE;
}
Ejemplo n.º 3
0
bool StateData::tool_cmd(ToolCom * com, const char * args,
                         BrowserNode * bn,
                         const QString & comment)
{
    if (((unsigned char) args[-1]) >= firstSetCmd) {
        bool ok = TRUE;

        if (!bn->is_writable() && !root_permission())
            ok = FALSE;
        else {
            switch ((unsigned char) args[-1]) {
            case setUmlEntryBehaviorCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    uml.on_entry = args;

                break;

            case setUmlExitBehaviorCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    uml.on_exit = args;

                break;

            case setUmlActivityCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    uml.do_activity = args;

                break;

            case setCppEntryBehaviorCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    cpp.on_entry = args;

                break;

            case setCppExitBehaviorCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    cpp.on_exit = args;

                break;

            case setCppActivityCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    cpp.do_activity = args;

                break;

            case setJavaEntryBehaviorCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    java.on_entry = args;

                break;

            case setJavaExitBehaviorCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    java.on_exit = args;

                break;

            case setJavaActivityCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    java.do_activity = args;

                break;

            case setDefCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    set_specification((BrowserOperation *) com->get_id(args));

                break;

            case setActiveCmd:
                if (reference != 0)
                    ok = FALSE;
                else
                    is_active = (*args != 0);

                break;

            case setDerivedCmd: {
                BrowserState * st = (BrowserState *) com->get_id(args);

                if (st == reference) {
                    com->write_ack(TRUE);
                    return TRUE;
                }

                if ((st != 0) &&
                    (!((BrowserState *) bn)->can_reference() ||
                     !((BrowserState *) browser_node)->can_reference(st)))
                    ok = FALSE;
                else
                    set_reference(st);
            }
            break;

            default:
                return BasicData::tool_cmd(com, args, bn, comment);
            }
        }

        if (ok) {
            bn->package_modified();
            modified();
        }

        com->write_ack(ok);
        return TRUE;
    }
    else
        return BasicData::tool_cmd(com, args, bn, comment);
}