From c6c2da1403f3b9709e8e5a05b65fc7d2e806ead1 Mon Sep 17 00:00:00 2001 From: Benoit Verhaeghe Date: Mon, 27 May 2024 10:43:23 +0200 Subject: [PATCH] all images of predefined traits do work --- moose-wiki/Developers/predefinedEntities.md | 201 +++++++++++++++++++- 1 file changed, 194 insertions(+), 7 deletions(-) diff --git a/moose-wiki/Developers/predefinedEntities.md b/moose-wiki/Developers/predefinedEntities.md index e24eae3..33264a7 100644 --- a/moose-wiki/Developers/predefinedEntities.md +++ b/moose-wiki/Developers/predefinedEntities.md @@ -60,15 +60,156 @@ Using an association involves: There are five full-fledged associations in FamixNG: - `FamixTAccess`, from: `FamixTWithAccess`, to: `FamixTAccessible` -
![PlantUML Image](https://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/moosetechnology/moosetechnology.github.io/master/moose-wiki/Developers/Diagrams/access.puml&fmt=svg)
+
+```plantuml! +@startuml +hide empty members + +skinparam class { + BackgroundColor white + ArrowColor black + BorderColor darkGray +} + +class TAccess << (T,lightGrey) >> { + Boolean isWrite + Boolean isRead + Boolean isReadWriteUnknown +} +class TAccessible << (T,lightGrey) >> { + Number numberOfAccessingMethods + Number numberOfAccesses + Number numberOfLocalAccesses + Number numberOfAccessingClasses + Number numberOfGlobalAccesses +} +class TWithAccesses << (T,lightGrey) >> { +} + + +TAccess " *incomingAccesses" -- "variable" TAccessible +TAccess " *accesses" -- "accessor" TWithAccesses +TAccessible -- " *accessors" TWithAccesses + + +@enduml +``` +
+ - `FamixTInheritance`, from: `FamixTWithInheritance`, to: `FamixTWithInheritance` -
![PlantUML Image](https://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/moosetechnology/moosetechnology.github.io/master/moose-wiki/Developers/Diagrams/inheritance.puml&fmt=svg)
+
+```plantuml! +@startuml +hide empty members + +skinparam class { + BackgroundColor white + ArrowColor black + BorderColor darkGray +} + +class TInheritance << (T,lightGrey) >> { +} +class TWithInheritances << (T,lightGrey) >> { + Number totalNumberOfSubclasses + Number numberOfDirectSubclasses + Number subclassHierarchyDepth + Number numberOfSubclasses + Number hierarchyNestingLevel +} + + +TInheritance " *subInheritances" -- "superclass" TWithInheritances +TInheritance " *superInheritances" -- "subclass" TWithInheritances + + +@enduml +``` +
- `FamixTInvocation`, from: `FamixTWithInvocation`, to: `FamixTInvocable`, for OO programs, there is an extra receiver: `FamixTInvocationReceiver` -
![PlantUML Image](https://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/moosetechnology/moosetechnology.github.io/master/moose-wiki/Developers/Diagrams/invocation.puml&fmt=svg)
+
+```plantuml! +@startuml +hide empty members + +skinparam class { + BackgroundColor white + ArrowColor black + BorderColor darkGray +} + +class TInvocation << (T,lightGrey) >> { +} +class TWithInvocations << (T,lightGrey) >> { +} +class TInvocable << (T,lightGrey) >> { +} +class TInvocationsReceiver << (T,lightGrey) >> { +} + + +TInvocation " *receivingInvocations" -- "receiver" TInvocationsReceiver +TInvocation " *outgoingInvocations" -- "sender" TWithInvocations +TInvocation " *incomingInvocations" -- " *candidates" TInvocable + + +@enduml +``` +
- `FamixTReference`, from: `FamixTWithReferences`, to: `FamixTReferenceable` -
![PlantUML Image](https://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/moosetechnology/moosetechnology.github.io/master/moose-wiki/Developers/Diagrams/reference.puml&fmt=svg)
+
+```plantuml! +@startuml +hide empty members + +skinparam class { + BackgroundColor white + ArrowColor black + BorderColor darkGray +} + +class TReference << (T,lightGrey) >> { +} +class TWithReferences << (T,lightGrey) >> { +} +class TReferenceable << (T,lightGrey) >> { +} + + +TReference " *incomingReferences" -- "referredType" TReferenceable +TReference " *outgoingReferences" -- "referencer" TWithReferences + + +@enduml +``` +
- `FamixTTraitUsage`, from: `FamixTWithTrait`, to: `FamixTTrait` -
![PlantUML Image](https://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/moosetechnology/moosetechnology.github.io/master/moose-wiki/Developers/Diagrams/usetrait.puml&fmt=svg)
+
+```plantuml! +@startuml +hide empty members + +skinparam class { + BackgroundColor white + ArrowColor black + BorderColor darkGray +} + +class TTraitUsage << (T,lightGrey) >> { +} +class TWithTraits << (T,lightGrey) >> { +} +class TTrait << (T,lightGrey) >> { +} + + +TTraitUsage " *incomingTraitUsages" -- "trait" TTrait +TTrait " *traits" -- "traitOwner" TWithTraits + + +@enduml +``` +
To these five we added two more specialized "associations": `DereferencedInvocation` (call of a pointer to a function in C) and `FileInclude` (also in C). @@ -76,8 +217,54 @@ These do not reify the association as a separate entity, but they might do so in For now there are only two traits to put at each end of the relationship: - `FamixTDereferencedInvocation` and `FamixTWithDereferencedInvocations` -
![PlantUML Image](https://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/moosetechnology/moosetechnology.github.io/master/moose-wiki/Developers/Diagrams/derefInvok.puml&fmt=svg)
-- `FamixTFileInclude` and `FamixTWithFileInclude`
![PlantUML Image](https://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/moosetechnology/moosetechnology.github.io/master/moose-wiki/Developers/Diagrams/fileInclude.puml&fmt=svg)
+
+```plantuml! +@startuml +hide empty members + +skinparam class { + BackgroundColor white + ArrowColor black + BorderColor darkGray +} + +class TDereferencedInvocation << (T,lightGrey) >> { +} +class TWithDereferencedInvocations << (T,lightGrey) >> { +} + + +TDereferencedInvocation " *dereferencedInvocations" -- "referencer" TWithDereferencedInvocations + + +@enduml +``` +
+- `FamixTFileInclude` and `FamixTWithFileInclude` +
+```plantuml! +@startuml +hide empty members + +skinparam class { + BackgroundColor white + ArrowColor black + BorderColor darkGray +} + +class TFileInclude << (T,lightGrey) >> { +} +class TWithFileIncludes << (T,lightGrey) >> { +} + + +TFileInclude " *outgoingIncludeRelations" -- "source" TWithFileIncludes +TFileInclude " *incomingIncludeRelations" -- "target" TWithFileIncludes + + +@enduml +``` +
### Technical Traits