{ "types": { "Class": [ { "name": "name", "type": "string", "default": "Class_" }, { "name": "attributes", "type": "list<$ATTRIBUTE>", "default": [] }, { "name": "constraints", "type": "list<$EVENT_HANDLER>", "default": [] }, { "name": "actions", "type": "list<$EVENT_HANDLER>", "default": [] }, { "name": "cardinalities", "type": "list<$CARDINALITY>", "default": [] }, { "name": "abstract", "type": "boolean", "default": false } ], "GlobalConstraint": [ { "name": "name", "type": "string", "default": "GC_" }, { "name": "event", "type": "$EVENT", "default": "" }, { "name": "code", "type": "code", "default": "" } ], "GlobalAction": [ { "name": "name", "type": "string", "default": "GA_" }, { "name": "event", "type": "$EVENT", "default": "" }, { "name": "code", "type": "code", "default": "" } ], "Association": [ { "name": "name", "type": "string", "default": "Association_" }, { "name": "attributes", "type": "list<$ATTRIBUTE>", "default": [] }, { "name": "constraints", "type": "list<$EVENT_HANDLER>", "default": [] }, { "name": "actions", "type": "list<$EVENT_HANDLER>", "default": [] }, { "name": "cardinalities", "type": "list<$CARDINALITY>", "default": [] }, { "name": "linktype", "type": "ENUM(visual,containment)", "default": "visual" } ], "Inheritance": [] }, "constraints": [ { "name": "noInheritanceLoops", "event": "post-create", "code": "/*newline*/var mm = '/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/',/*newline*/ nout = getNeighbors('>',mm+'Class'),/*newline*/ visited = [];/*newline*/function dfs(to_visit)/*newline*/{/*newline*/ var curr = to_visit.pop();/*newline*/ if( curr == undefined )/*newline*/ return true;/*newline*/ else if( visited.indexOf(curr) > -1 )/*newline*/ return false;/*newline*/ else/*newline*/ {/*newline*/ visited.push(curr);/*newline*/ var ntype = (getAttr('$type',curr) == mm+'Class' ? /*newline*/ mm+'Inheritance' : mm+'Class');/*newline*/ return dfs( to_visit.concat(getNeighbors('>',ntype,curr)) );/*newline*/ }/*newline*/}/*newline*/dfs(nout);", "targetType": "Inheritance" } ], "actions": [], "cardinalities": { "Class": [ { "dir": "out", "type": "Association", "min": "0", "max": "Infinity" }, { "dir": "in", "type": "Association", "min": "0", "max": "Infinity" }, { "dir": "out", "type": "Inheritance", "min": "0", "max": "Infinity" }, { "dir": "in", "type": "Inheritance", "min": "0", "max": "Infinity" } ], "GlobalConstraint": [], "GlobalAction": [], "Association": [ { "dir": "in", "type": "Class", "min": "0", "max": "1" }, { "dir": "out", "type": "Class", "min": "0", "max": "1" } ], "Inheritance": [ { "dir": "in", "type": "Class", "min": "0", "max": "1" }, { "dir": "out", "type": "Class", "min": "0", "max": "1" } ] }, "legalConnections": { "Class": { "Class": [ "Association", "Inheritance" ] } }, "connectorTypes": { "Association": "visual", "Inheritance": "visual" }, "types2parentTypes": {} }