diff options
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.xtend | 24 |
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 |