/** CodeCloner is set up so that this is called only for reference pointers * only. */ void CodeCloner::object_enquiry(Object *obj, CloneStreamObjectInstance *co, PTR_TYPE ptr_type) { if (is_kind_of<SymbolTableObject>(obj)) { if (_new_table->has_symbol_table_object_member(to<SymbolTableObject>(obj))) set_reference(co); else set_clone_object(co); } else if (is_kind_of<SymbolTable>(obj)) { // ??? set_replacement(co, _new_table); } else { set_reference(co); } }
void PseudoStateData::read(char * & st, char * & k) { if (!strcmp(k, "reference")) { set_reference(BrowserPseudoState::read_ref(st)); k = read_keyword(st); } BasicData::read(st, k); // updates k }
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); } }
bool PseudoStateData::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 setDerivedCmd: { BrowserPseudoState * st = (BrowserPseudoState *) com->get_id(args); if (st == reference) { com->write_ack(TRUE); return TRUE; } if ((st != 0) && !((BrowserPseudoState *) browser_node)->can_reference(st)) { com->write_ack(FALSE); return TRUE; } set_reference(st); } break; default: return BasicData::tool_cmd(com, args, bn, comment); } // ok case bn->modified(); modified(); com->write_ack(TRUE); } } else return BasicData::tool_cmd(com, args, bn, comment); return TRUE; }
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); }