Esempio n. 1
0
void BasicData::read(char * & st, char * & k) {
  if (!strcmp(k, "stereotype")) {
    set_stereotype(read_string(st));
    k = read_keyword(st);
  }
  else
    set_stereotype(QString::null);
}
Esempio n. 2
0
bool BasicData::tool_cmd(ToolCom * com, const char * args,
			 BrowserNode * bn, const QString & comment) {
  switch ((unsigned char) args[-1]) {
  case setStereotypeCmd:
    if (!bn->is_writable() && !root_permission())
      com->write_ack(FALSE);
    else {
      set_stereotype(args);
      browser_node->package_modified();
      modified();
      com->write_ack(TRUE);
    }
    break;
  case getDefCmd:
    send_uml_def(com, bn, comment);
    send_cpp_def(com);
    send_java_def(com);
    if (com->api_format() >= 34) {
      send_php_def(com);
      if (com->api_format() >= 39)
	send_python_def(com);
    }
    send_idl_def(com);
    break;
  case getUmlDefCmd:
    send_uml_def(com, bn, comment);
    break;
  case getCppDefCmd:
    send_uml_def(com, bn, comment);
    send_cpp_def(com);
    break;
  case getJavaDefCmd:
    send_uml_def(com, bn, comment);
    send_java_def(com);
    break;
  case getPhpDefCmd:
    send_uml_def(com, bn, comment);
    send_php_def(com);
    break;
  case getPythonDefCmd:
    send_uml_def(com, bn, comment);
    send_python_def(com);
    break;
  case getIdlDefCmd:
    send_uml_def(com, bn, comment);
    send_idl_def(com);
    break;
  default:
    return FALSE;
  }
  
  return TRUE;
}    
Esempio n. 3
0
bool RelationData::tool_cmd(ToolCom * com, BrowserRelation * rel,
                            const char * args)
{
    if (((unsigned char) args[-1]) >= firstSetCmd) {
        if (!rel->is_writable() && !root_permission())
            com->write_ack(FALSE);
        else {
            RoleData & r = (rel == start) ? a : b;

            switch ((unsigned char) args[-1]) {
            case setDescriptionCmd:
                r.comment = args;
                break;

            case setStereotypeCmd:
                set_stereotype(args);
                modified();
                com->write_ack(TRUE);

                // send the other side to update it
                if (rel == start) {
                    if (end != 0)
                        end->write_id(com);
                    else
                        com->write_id(0);
                }
                else
                    start->write_id(com);

                return TRUE;

            case setRelationAssocClassCmd: {
                AType t;

                com->get_type(t, args);
                set_association(t);
                modified();
                com->write_ack(TRUE);

                // send the other side to update it
                if (rel == start) {
                    if (end != 0)
                        end->write_id(com);
                    else
                        com->write_id(0);
                }
                else
                    start->write_id(com);
            }

            return TRUE;

            case setNameCmd:
                name = args;
                break;

            case setDefaultValueCmd:
                r.init_value = args;
                break;

            case setIsClassMemberCmd:
                r.isa_class_relation = (*args != 0);
                break;

            case setIsVolatileCmd:
                r.isa_volatile_relation = (*args != 0);
                break;

            case setVisibilityCmd: {
                UmlVisibility v;

                if (! com->get_visibility(v, args)) {
                    com->write_ack(FALSE);
                    return TRUE;
                }

                r.uml_visibility = v;
            }
            break;

            case setConstraintCmd:
                r.constraint = args;
                break;

            case setCppDeclCmd:
                r.cpp_decl = args;
                break;

            case setJavaDeclCmd:
                r.java_decl = args;
                break;

            case setJavaAnnotationCmd: {
                WrapperStr s = args;

                s = s.stripWhiteSpace();

                if (! s.isEmpty())
                    s += '\n';

                r.java_annotation = s;
            }
            break;

            case setPhpDeclCmd:
                r.php_decl = args;
                break;

            case setPythonDeclCmd:
                r.python_decl = args;
                break;

            case setIdlDeclCmd:
                r.idl_decl = args;
                break;

            case setCppVisibilityCmd: {
                UmlVisibility v;

                if (! com->get_visibility(v, args)) {
                    com->write_ack(FALSE);
                    return TRUE;
                }

                r.cpp_visibility = v;
            }
            break;

            case setIsReadOnlyCmd:
                r.isa_const_relation = (*args != 0);
                break;

            case setIsCppMutableCmd:
                r.cpp_mutable = (*args != 0);
                break;

            case setRoleNameCmd:
                if ((rel == start) ? wrong_role_a_name(args)
                    : wrong_role_b_name(args)) {
                    com->write_ack(FALSE);
                    return TRUE;
                }

                r.role = args;
                break;

            case setMultiplicityCmd:
                r.multiplicity = args;
                break;

            case setCppVirtualInheritanceCmd:
                r.cpp_virtual_inheritance = (*args != 0);
                break;

            case setIsIdlTruncatableCmd:
                r.idl_truncatable_inheritance = (*args != 0);;
                break;

            case setIsJavaTransientCmd:
                r.java_transient = (*args != 0);
                break;

            case setIdlCaseCmd: {
                BrowserAttribute * at = (BrowserAttribute *) com->get_id(args);

                set_idlcase(r, at, args);
            }
            break;

            case setDerivedCmd:
                switch (*args) {
                case 0:
                    r.is_derived = r.is_derivedunion = FALSE;
                    break;

                case 1:
                    r.is_derived = TRUE;
                    r.is_derivedunion = FALSE;
                    break;

                case 3:
                    r.is_derived = r.is_derivedunion = TRUE;
                    break;

                default:
                    // derived union but non derived
                    com->write_ack(FALSE);
                    return TRUE;
                }

                break;

            case setOrderingCmd:
                r.is_ordered = (*args != 0);
                break;

            case setUniqueCmd:
                r.is_unique = (*args != 0);
                break;

            case setTypeCmd:
                // only inside associations
            {
                UmlCode c;

                if (!com->get_relation_kind(c, args)) {
                    com->write_ack(FALSE);
                    return TRUE;
                }
                else {
                    type = c;

                    if (end)
                        end->package_modified();

                    if (check_end_visibility())
                        end->modified();

                    start->modified();
                    start->package_modified();
                    modified();
                }
            }
            break;

            default:
                return FALSE;
            }

            // ok case
            if (rel == start) {
                start->modified();
                start->package_modified();
            }
            else {
                end->modified();
                end->package_modified();
            }

            modified();
            com->write_ack(TRUE);
        }
    }
    else {
        switch ((unsigned char) args[-1]) {
        case getDefCmd:
            send_uml_def(com, rel);
            send_cpp_def(com, rel);
            send_java_def(com, rel);

            if (com->api_format() >= 34) {
                send_php_def(com, rel);

                if (com->api_format() >= 39)
                    send_python_def(com, rel);
            }

            send_idl_def(com, rel);
            break;

        case getUmlDefCmd:
            send_uml_def(com, rel);
            break;

        case getCppDefCmd:
            send_uml_def(com, rel);
            send_cpp_def(com, rel);
            break;

        case getJavaDefCmd:
            send_uml_def(com, rel);
            send_java_def(com, rel);
            break;

        case getPhpDefCmd:
            send_uml_def(com, rel);
            send_php_def(com, rel);
            break;

        case getPythonDefCmd:
            send_uml_def(com, rel);
            send_python_def(com, rel);
            break;

        case getIdlDefCmd:
            send_uml_def(com, rel);
            send_idl_def(com, rel);
            break;

        case sideCmd:
            if (*args)
                start->write_id(com);
            else if (end != 0)
                end->write_id(com);
            else
                com->write_id(0);

            break;

        default:
            return FALSE;
        }
    }

    return TRUE;
}
Esempio n. 4
0
void ClassData::read(char * & st, char * & k) {
  if (!strcmp(k, "abstract")) {
    is_abstract = TRUE;
    k = read_keyword(st);
  }
  else
    is_abstract = FALSE;
  
  if (!strcmp(k, "active")) {
    is_active = TRUE;
    k = read_keyword(st);
  }
  else
    is_active = FALSE;
  
  if (!strcmp(k, "visibility")) {
    uml_visibility = ::visibility(read_keyword(st));  
    k = read_keyword(st);
  }
  else {
    // old non nested class
    uml_visibility = UmlPackageVisibility;
  }
  
  if (!strcmp(k, "stereotype")) {
    set_stereotype(read_string(st));
    
    if (!strcmp(stereotype, "typedef")) {
      AType t;
      
      t.read(st, "base_type", "explicit_base_type");
      set_base_type(t);
    }
    
    k = read_keyword(st);
  }
  
  unsigned n, i;
  
  if (!strcmp(k, "nformals")) {
    n = read_unsigned(st);
    set_n_formalparams(n);
    
    for (i = 0; i != n; i += 1)
      formals[i].read(st);
    
    k = read_keyword(st);
  }
  else
    set_n_formalparams(0);

  if (!strcmp(k, "nactuals")) {
    n = read_unsigned(st);
    
    BrowserClass * cl = 0;

    for (i = 0; i != n; i += 1) {
      ActualParamData * actual = ActualParamData::read(st);

      actuals.append(actual);
      
      if (actual->get_class() != cl) {
	cl = actual->get_class();
	connect(cl->get_data(), SIGNAL(deleted()),
		this, SLOT(update_actuals()));
	connect(cl->get_data(), SIGNAL(changed()),
		this, SLOT(update_actuals()));
      }
    }

    k = read_keyword(st);
  }
  else {
    n = 0;
    actuals.clear();
  }
  
  if (!strcmp(k, "constraint")) {
    constraint = read_string(st);
    k = read_keyword(st);
  }
  else
    constraint = QString::null;
  
  if (!strcmp(k, "cpp_external")) {
    cpp_external = TRUE;
    k = read_keyword(st);
  }
  else
    cpp_external = FALSE;
  
  if (!strcmp(k, "cpp_visibility")) {
    cpp_visibility = ::visibility(read_keyword(st));
    k = read_keyword(st);
  }
  else
    cpp_visibility = UmlDefaultVisibility;

  if (!strcmp(k, "cpp_decl")) {
    cpp_decl = read_string(st);
    k = read_keyword(st);
  }
  else
    wrong_keyword(k, "cpp_decl");
  
  if (!strcmp(k, "java_external")) {
    java_external = TRUE;
    k = read_keyword(st);
  }
  else
    java_external = FALSE;
  
  if (read_file_format() <= 33) {
    // old file
    if ((cpp_visibility == UmlDefaultVisibility) &&
	(uml_visibility != UmlPublic) && 
	(uml_visibility != UmlPackageVisibility))
      cpp_visibility = uml_visibility;
    
    if (!strcmp(k, "public")) {
      uml_visibility = UmlPublic;
      k = read_keyword(st);
    }
    else
      uml_visibility = UmlPackageVisibility;
  }
  
  if (!strcmp(k, "final")) {
    java_final = TRUE;
    k = read_keyword(st);
  }
  else
    java_final = FALSE;
  
  if (!strcmp(k, "java_decl")) {
    java_decl = read_string(st);
    k = read_keyword(st);
  }
  else
    wrong_keyword(k, "java_decl");
  
  if (!strcmp(k, "java_annotation")) {
    java_annotation = read_string(st);
    k = read_keyword(st);
  }
  else
    java_annotation = QString::null;
  
  if (!strcmp(k, "php_external")) {
    php_external = TRUE;
    k = read_keyword(st);
  }
  else
    php_external = FALSE;
  
  if (!strcmp(k, "php_final")) {
    php_final = TRUE;
    k = read_keyword(st);
  }
  else
    php_final = FALSE;
  
  if (!strcmp(k, "php_decl")) {
    php_decl = read_string(st);
    k = read_keyword(st);
  }
  else if (read_file_format() >= 44)
    wrong_keyword(k, "php_decl");
  else
    php_decl = "";
  
  if (!strcmp(k, "python_external")) {
    python_external = TRUE;
    k = read_keyword(st);
  }
  else
    python_external = FALSE;
  
  if (!strcmp(k, "python_2_2")) {
    python_2_2 = TRUE;
    k = read_keyword(st);
  }
  else
    python_2_2 = (read_file_format() < 51);
  
  if (!strcmp(k, "python_decl")) {
    python_decl = read_string(st);
    k = read_keyword(st);
  }
  else if (read_file_format() >= 51)
    wrong_keyword(k, "python_decl");
  else
    python_decl = "";
  
  if (!strcmp(k, "idl_external")) {
    idl_external = TRUE;
    k = read_keyword(st);
  }
  else
    idl_external = FALSE;
  
  if (!strcmp(k, "local")) {
    idl_local = TRUE;
    k = read_keyword(st);
  }
  else
    idl_local = FALSE;
  
  if (!strcmp(k, "custom")) {
    idl_custom = TRUE;
    k = read_keyword(st);
  }
  else
    idl_custom = FALSE;
  
  if (!strcmp(k, "idl_decl")) {
    idl_decl = read_string(st);
    k = read_keyword(st);
  }
  else
    wrong_keyword(k, "idl_decl");
  
  AType t;
  
  t.read(st, "switch_type", "explicit_switch_type", k);
  set_switch_type(t);
  
  k = read_keyword(st);
}
Esempio n. 5
0
void AttributeData::set_browser_node(BrowserAttribute * a, bool update,
                                     bool enum_item)
{
    BasicData::set_browser_node(a);
    if (update) {
        if (enum_item)
            type.type = (BrowserClass *) a->parent();

        if (uml_visibility == UmlDefaultVisibility)
            uml_visibility =
                ((BrowserNode *) browser_node->parent())->get_visibility(UmlAttribute);

        QString cl_stereotype =
            ((ClassData *)(((BrowserClass *) browser_node->parent())->get_data()))->get_stereotype();

        if (GenerationSettings::cpp_get_default_defs()) {
            if (ClassDialog::cpp_stereotype(cl_stereotype) != "enum")
                cpp_decl = GenerationSettings::cpp_default_attr_decl(multiplicity);
            else
                cpp_decl = (enum_item) ? GenerationSettings::cpp_default_enum_item_decl() : "";
        }

        if (GenerationSettings::java_get_default_defs()) {
            bool enump = ClassDialog::java_stereotype(cl_stereotype) == "enum";

            if (!enum_item) {
                java_decl = GenerationSettings::java_default_attr_decl(multiplicity);

                if (enump)
                    set_stereotype("attribute");
            }
            else
                java_decl = (enump)
                            ? GenerationSettings::java_default_enum_item_decl()
                            : GenerationSettings::java_default_enum_pattern_item_decl();
        }

        if (GenerationSettings::php_get_default_defs()) {
            php_decl = (enum_item)
                       ? GenerationSettings::php_default_enum_item_decl()
                       : GenerationSettings::php_default_attr_decl();
        }

        if (GenerationSettings::python_get_default_defs()) {
            python_decl = (enum_item)
                          ? GenerationSettings::python_default_enum_item_decl()
                          : GenerationSettings::python_default_attr_decl(multiplicity);
        }

        QString idl_st = ClassDialog::idl_stereotype(cl_stereotype);

        if (GenerationSettings::idl_get_default_defs()) {
            if (idl_st == "enum")
                idl_decl = (enum_item) ? GenerationSettings::idl_default_enum_item_decl() :  "";
            else if (idl_st == "union")
                idl_decl = GenerationSettings::idl_default_union_item_decl(multiplicity);
            else if (idl_st == "valuetype")
                idl_decl = GenerationSettings::idl_default_valuetype_attr_decl(multiplicity);
            else
                idl_decl = GenerationSettings::idl_default_attr_decl(multiplicity);
        }
    }
}