2 Copyright (c) 2000-2016 Ericsson Telecom AB
3 All rights reserved. This program and the accompanying materials
4 are made available under the terms of the Eclipse Public License v1.0
5 which accompanies this distribution, and is available at
6 http://www.eclipse.org/legal/epl-v10.html
15 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8">
16 <meta http-equiv=
"Content-Language" content=
"en-us">
19 <body bgcolor=
"#DAD3C5" vlink=
"#0094D2" link=
"#003258">
20 <table align=
"left" border=
"0" cellspacing=
"0" cellpadding=
"0" valign=top
>
22 <td width=
105 height=
40><a href=
"https://projects.eclipse.org/projects/tools.titan"><img src=
"../images/titan_transparent.gif" border=
0 width=
105 height=
40 align=
"left" alt=
"Titan"></a></td>
25 <table border=
"0" align=
"right" cellpadding=
"0" cellspacing=
"0">
27 <td><a href=
"../titan_main.html" alt=
"contents"><img border=
"0" src=
"../images/ao.jpg" width=
"53" height=
"40"></a></td>
28 <td><a href=
"../titan_index.html" alt=
"index"><img border=
"0" src=
"../images/up.jpg" width=
"53" height=
"40"></a></td>
29 <td><a href=
"for.html" alt=
"previous"><img border=
"0" src=
"../images/left.jpg" width=
"53" height=
"40"></a></td>
30 <td><a href=
"from.html" alt=
"next"><img border=
"0" src=
"../images/right.jpg" width=
"53" height=
"40"></a></td>
38 <p>1.
<a href=
"#1."> Declaring a definition with friend visibility
</a></p>
39 <p>2.
<a href=
"#2."> Declaring a friend module
</a></p>
41 <hr align=
"left" width=
"75%">
42 <h4><a name=
"1.">1. Declaring a definition with friend visibility
</a></h4>
43 <hr align=
"left" width=
"50%">
44 <p>Friend is a visibility modifier, that can be atteched to definitions on module level. Where it means that the definition is visible in every friend module where it is imported to.
47 <table border=
"0" width=
"90%" bgcolor=
"#FFB599" cellpadding=
"4">
50 <h3 align=
"center"><font face=
"Courier New" color=
"#003258" size=
"5"><b>friend definition;
</b></font></h3>
56 <p><a href=
"#Ex1">Example
</a></p>
57 <hr align=
"left" width=
"75%">
58 <h4><a name=
"1.">2. Declaring a friend module
</a></h4>
59 <hr align=
"left" width=
"50%">
60 <p>A module can declare his friend modules, for which its friend definition will be visible.
63 <table border=
"0" width=
"90%" bgcolor=
"#FFB599" cellpadding=
"4">
66 <h3 align=
"center"><font face=
"Courier New" color=
"#003258" size=
"5"><b>friend module identifier_list;
</b></font></h3>
72 <p><a href=
"#Ex1">Example
</a></p>
73 <hr align=
"left" width=
"75%">
74 <p>Related keywords:
</p>
76 <li><a href=
"public.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">public
</font></b></a></li>
77 <li><a href=
"private.html"><b><font face=
"Courier New" color=
"#003258" size=
"4">private
</font></b></a></li>
79 <p><a name=
"Ex1">Example
1</a>:
80 <p><font face=
"Courier New">module module1 {
<br>
81 import from module2 all;
<br>
83 const module2Type c_example1 :=
4; //by default public, visible
<br>
84 const module2PublieType c_example2 :=
4; //public, visible
<br>
85 const module2FriendType c_example3 :=
4; //this is a friend module, visible
<br>
86 const module2PrivateType c_example4 :=
4; //ERROR, not visible
<br>
88 <p><font face=
"Courier New">module module2 {
<br>
91 type integer module2Type;//by default public, visible in every module
<br>
92 public type integer module2PublieType; //public, visible in every module
<br>
93 friend type integer module2FriendType; //friend, visible only in friend modules
<br>
94 private type module2PrivateType; //private, visible only in this module
<br>
96 <hr align=
"left" width=
"25%">
97 <hr align=
"left" width=
"25%">