Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend')
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend24
1 files changed, 24 insertions, 0 deletions
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend
new file mode 100644
index 00000000000..d754cf6f4d8
--- /dev/null
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppClassFriendDeclaration.xtend
@@ -0,0 +1,24 @@
+package org.eclipse.papyrus.cpp.codegen.xtend
+
+import org.eclipse.uml2.uml.Classifier
+import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
+import org.eclipse.papyrus.acceleo.GenUtils
+import org.eclipse.papyrus.C_Cpp.Friend
+import org.eclipse.papyrus.C_Cpp.NoCodeGen
+
+/**
+ * @author Önder GÜRCAN (onder.gurcan@cea.fr)
+ */
+class CppClassFriendDeclaration {
+ static def CppClassFriendDeclaration(Classifier friend) '''
+ friend class «CppGenUtils.cppQualifiedName(friend)»
+ '''
+
+ static def CppClassIncludeFriendDeclaration(Classifier clazz) {
+ for (uc : GenUtils.getUsedClassifiers(clazz)) {
+ if (GenUtils.hasStereotype(uc, Friend) && (!GenUtils.hasStereotype(uc, NoCodeGen))) {
+ CppClassFriendDeclaration(uc)
+ }
+ }
+ }
+} \ No newline at end of file

Back to the top