{ "types": { "__pClass": [ { "name": "__pLabel", "type": "string", "default": "" }, { "name": "__pMatchSubtypes", "type": "boolean", "default": false }, { "name": "name", "type": "code", "default": "getAttr()" }, { "name": "attributes", "type": "code", "default": "getAttr()" }, { "name": "constraints", "type": "code", "default": "getAttr()" }, { "name": "actions", "type": "code", "default": "getAttr()" }, { "name": "cardinalities", "type": "code", "default": "getAttr()" }, { "name": "abstract", "type": "code", "default": "getAttr()" } ], "__pGlobalConstraint": [ { "name": "__pLabel", "type": "string", "default": "" }, { "name": "__pMatchSubtypes", "type": "boolean", "default": false }, { "name": "name", "type": "code", "default": "getAttr()" }, { "name": "event", "type": "code", "default": "getAttr()" }, { "name": "code", "type": "code", "default": "getAttr()" } ], "__pGlobalAction": [ { "name": "__pLabel", "type": "string", "default": "" }, { "name": "__pMatchSubtypes", "type": "boolean", "default": false }, { "name": "name", "type": "code", "default": "getAttr()" }, { "name": "event", "type": "code", "default": "getAttr()" }, { "name": "code", "type": "code", "default": "getAttr()" } ], "__pAssociation": [ { "name": "__pLabel", "type": "string", "default": "" }, { "name": "__pMatchSubtypes", "type": "boolean", "default": false }, { "name": "name", "type": "code", "default": "getAttr()" }, { "name": "attributes", "type": "code", "default": "getAttr()" }, { "name": "constraints", "type": "code", "default": "getAttr()" }, { "name": "actions", "type": "code", "default": "getAttr()" }, { "name": "cardinalities", "type": "code", "default": "getAttr()" }, { "name": "linktype", "type": "code", "default": "getAttr()" } ], "__pInheritance": [ { "name": "__pLabel", "type": "string", "default": "" }, { "name": "__pMatchSubtypes", "type": "boolean", "default": false } ] }, "constraints": [ { "name": "noInheritanceLoops", "event": "post-create", "code": "/* comment next line to enable this constraint */\nthrow \"IgnoredConstraint\"\n/*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": [ { "name": "distinctPLabels", "event": "post-create", "code": "if( getAttr(\"__pLabel\") == \"\" )\n{\n\tvar pLabels = getAllNodes().\n\t\t\t\t\t\t\tfilter( function(n) {return hasAttr(\"__pLabel\",n);} ).\n\t\t\t\t\t\t\t\tmap( function(n) {return getAttr(\"__pLabel\",n);} ),\n\t\t i\t\t\t= \"0\";\n\n\twhile( _utils.contains(pLabels,i) )\n\t\ti = String(parseInt(i)+1);\n\tsetAttr(\"__pLabel\",i);\n}", "targetType": "*" } ], "cardinalities": { "__pClass": [ { "dir": "out", "type": "__pAssociation", "min": 0, "max": "Infinity" }, { "dir": "in", "type": "__pAssociation", "min": 0, "max": "Infinity" }, { "dir": "out", "type": "__pInheritance", "min": 0, "max": "Infinity" }, { "dir": "in", "type": "__pInheritance", "min": 0, "max": "Infinity" } ], "__pGlobalConstraint": [], "__pGlobalAction": [], "__pAssociation": [ { "dir": "in", "type": "__pClass", "min": 0, "max": "1" }, { "dir": "out", "type": "__pClass", "min": 0, "max": "1" } ], "__pInheritance": [ { "dir": "in", "type": "__pClass", "min": 0, "max": "1" }, { "dir": "out", "type": "__pClass", "min": 0, "max": "1" } ] }, "legalConnections": { "__pClass": { "__pClass": [ "__pAssociation", "__pInheritance" ] } }, "connectorTypes": { "__pAssociation": "visual", "__pInheritance": "visual" }, "types2parentTypes": { "__pClass": [], "__pGlobalConstraint": [], "__pGlobalAction": [], "__pAssociation": [], "__pInheritance": [] } }