Entity: CStruct 229 659 CType * name String 3 false true false Operation: toString CStruct String query true result = "struct " + name + "{\n" & members->forAll( m | result = result + m.type + " " + m.name + ";\n" ) & result = result + "};\n" Entity: CMember 638 669 null * name String 3 false false false Operation: toString CMember String query true result = " " + type + " " + name + ";\n" Entity: CType 399 895 null * abstract ctypeId String 3 false true false Operation: toString CType String query abstract true true Entity: COperation 56 967 null * name String 3 false false false text String 3 false false false Operation: parameterDeclaration COperation String s Sequence(CVariable) query true ( s.size = 0 => result = "" ) & ( s.size = 1 => result = s[1].type.name + " " + s[1].name ) & ( s.size > 1 => result = s[1].type.name + " " + s[1].name + ", " + parameterDeclaration(s.tail) ) Operation: toString COperation String query true result = returnType.name + " " + name + "(" + parameterDeclaration(parameters) + ")\n" + "{ " + text + " }" Entity: CVariable 417 1041 null * name String 3 false false false kind String 3 false false false initialisation String 3 false false false Entity: CProgram 58 1099 null * Operation: printProgramHeader CProgram void true "#include "->display() & "#include "->display() & "#include "->display() & "#include "->display() & "#include "->display() & "#include \n"->display() & "#define ALLOCATIONSIZE 10\n"->display() & "#define TRUE 1"->display() & "#define FALSE 0\n"->display() Operation: printMainOperation CProgram void query true "int main() { return 0; }"->display() Operation: printDeclarations CProgram void true true Operation: printOperations CProgram void true true Entity: CPrimitiveType 210 751 CType * name String 3 false false false Operation: toString CPrimitiveType String query true result = name Entity: CArrayType 116 814 CType * duplicates boolean 3 false false false Operation: toString CArrayType String query true result = componentType + "*" Entity: CPointerType 651 814 CType * Operation: toString CPointerType String query true result = pointsTo + "*" Association: CStruct CMember 1 475 696 637 682 0 members null ordered Association: COperation CVariable -1 316 1004 420 1058 0 parameters null ordered Association: CVariable CType 0 547 1043 537 950 1 type null Association: COperation CType 0 316 967 401 949 1 returnType null Association: CArrayType CType 0 240 870 401 901 1 componentType null 241 897 Association: CPointerType CType 0 751 852 664 908 1 pointsTo null 681 907 Association: CMember CType 0 640 722 555 895 1 type null Association: CProgram COperation 1 143 1101 153 1055 0 operations null Association: CProgram CVariable 1 239 1148 419 1107 0 variables null Association: CProgram CStruct -1 60 1108 231 685 0 structs null 20 1005 21 687 Generalisation: CType CStruct 462 713 462 897 Generalisation: CType CPrimitiveType 365 803 439 895 Generalisation: CType CPointerType 660 851 653 896 Generalisation: CType CArrayType 340 852 403 895 Entity: NamedElement 103 30 null * abstract name String 3 false false false Entity: Relationship 549 34 NamedElement * abstract Entity: Feature 6 125 NamedElement * abstract isStatic boolean 3 false false false Entity: Type 261 133 NamedElement * abstract Entity: Classifier 275 201 Type * abstract Entity: StructuralFeature 26 208 Feature * abstract isReadOnly boolean 3 false false false Entity: DataType 343 143 Classifier * abstract Entity: PrimitiveType 405 196 DataType * Entity: Enumeration 469 160 DataType * Entity: Entity 295 292 Classifier * isAbstract boolean 3 false false false isInterface boolean 3 false false false Entity: Property 27 325 StructuralFeature * lower int 3 false false false upper int 3 false false false isOrdered boolean 3 false false false isUnique boolean 3 false false false isDerived boolean 3 false false false Entity: Association 603 345 Relationship * addOnly boolean 3 false false false aggregation boolean 3 false false false Entity: Generalization 509 248 Relationship * Entity: EnumerationLiteral 374 54 NamedElement * Entity: BehaviouralFeature 8 471 Feature * abstract Entity: Operation 8 527 BehaviouralFeature * isQuery boolean 3 false false false isCached boolean 3 false false false Entity: Constraint 506 567 null * constraintKind int 3 false false false ordered boolean 3 false false false Entity: Expression 338 591 null * abstract Entity: UseCase 661 449 Classifier * isGeneric boolean 3 false false false isDerived boolean 3 false false false Entity: CollectionType 398 92 DataType * Association: Feature Type 0 210 130 262 140 1 type null Association: Entity Property 1 300 292 63 326 0 ownedAttribute owner ordered Association: Association Property -1 604 394 248 392 0 memberEnd null ordered Association: Enumeration EnumerationLiteral -1 568 161 535 79 0 ownedLiteral null ordered Association: Entity Generalization 1 362 293 511 251 0 generalization specific Association: Generalization Entity 0 579 273 523 325 1 general specialization Association: Entity Operation 1 326 346 208 530 0 ownedOperation owner ordered Association: Operation Expression -1 225 540 395 588 1 precondition null Association: Operation Expression -1 218 581 338 615 1 postcondition null Association: Constraint Expression -1 510 571 406 591 1 condition null Association: Constraint Expression -1 508 620 429 611 1 succedent null Association: Entity Constraint 1 447 348 578 566 0 constraint owner Association: UseCase Constraint -1 668 505 619 565 0 orderedPostconditions null ordered Association: UseCase Constraint -1 788 505 708 593 0 assumptions null 789 593 Association: BehaviouralFeature Property -1 166 474 186 423 0 parameters null ordered Association: UseCase Property -1 664 450 246 421 0 parameters null ordered Association: Association Entity -1 605 356 521 348 -1 linkedClass null Association: UseCase UseCase -1 800 451 845 450 0 extensions null 800 423 904 422 Association: UseCase UseCase 0 863 502 877 473 0 inclusions null 862 525 940 526 940 492 Association: CollectionType Type 0 394 98 307 133 1 elementType null Generalisation: NamedElement Feature 53 127 105 67 Generalisation: NamedElement Relationship 552 40 261 35 Generalisation: NamedElement Type 278 135 243 68 Generalisation: Feature StructuralFeature 168 210 167 162 Generalisation: Type Classifier 287 203 287 156 Generalisation: DataType Enumeration 471 165 425 163 Generalisation: DataType PrimitiveType 414 198 414 165 Generalisation: Classifier Entity 336 296 335 224 Generalisation: Classifier DataType 372 164 334 203 Generalisation: StructuralFeature Property 51 329 52 247 Generalisation: Relationship Association 731 348 650 58 Generalisation: Relationship Generalization 588 247 583 56 Generalisation: NamedElement EnumerationLiteral 375 62 260 58 Generalisation: Feature BehaviouralFeature 12 472 14 165 Generalisation: BehaviouralFeature Operation 35 528 35 493 Generalisation: Classifier UseCase 777 452 356 220 775 245 Generalisation: DataType CollectionType 420 119 422 145 GeneralUseCase: printcode false Constraint: null true printProgramHeader() CProgram printcode false Constraint: null true ( "struct " + name + " {" )->display() & members->forAll( m | ( m.type + " " + m.name )->display() ) & "};\n"->display() CStruct printcode false Constraint: null true self->display() COperation printcode false GeneralUseCase: types2C false Constraint: name = "int" null CPrimitiveType->exists( p | p.ctypeId = typeId & p.name = "int" ) PrimitiveType types2C false Constraint: name = "long" null CPrimitiveType->exists( p | p.ctypeId = typeId & p.name = "long" ) PrimitiveType types2C false Constraint: name = "double" null CPrimitiveType->exists( p | p.ctypeId = typeId & p.name = "double" ) PrimitiveType types2C false Constraint: name = "boolean" null CPrimitiveType->exists( p | p.ctypeId = typeId & p.name = "unsigned char" ) PrimitiveType types2C false Constraint: name = "String" null CPointerType->exists( t | t.ctypeId = typeId & CPrimitiveType->exists( p | p.name = "char" & t.pointsTo = p ) ) PrimitiveType types2C false Constraint: null true CPointerType->exists( p | p.ctypeId = typeId & CStruct->exists( c | c.name = name & c.ctypeId = name & p.pointsTo = c ) ) Entity types2C false Constraint: name = "Sequence" null CArrayType->exists( a | a.ctypeId = typeId & a.duplicates = true & a.componentType = CType[elementType.typeId] ) CollectionType types2C false Constraint: name = "Set" null CArrayType->exists( c | c.ctypeId = typeId & c.duplicates = false & c.componentType = CType[elementType.typeId] ) CollectionType types2C false Constraint: c = CStruct[name] p : ownedAttribute CMember->exists( m | m.name = p.name & m.type = CType[p.type.typeId] & m : c.members ) Entity types2C false