summaryrefslogtreecommitdiffstats
path: root/lib/l10n/pt_PT.js
Commit message (Expand)AuthorAgeFilesLines
* [tx-robot] updated from transifexNextcloud bot2021-06-171-1/+1
* [tx-robot] updated from transifexNextcloud bot2021-05-211-6/+6
* [tx-robot] updated from transifexNextcloud bot2021-04-231-2/+2
* [tx-robot] updated from transifexNextcloud bot2021-02-021-7/+1
* [tx-robot] updated from transifexNextcloud bot2020-12-011-1/+1
* [tx-robot] updated from transifexNextcloud bot2020-07-101-1/+1
* [tx-robot] updated from transifexNextcloud bot2020-07-091-1/+1
* [tx-robot] updated from transifexNextcloud bot2020-05-161-2/+2
* [tx-robot] updated from transifexNextcloud bot2020-05-091-18/+0
* [tx-robot] updated from transifexNextcloud bot2020-05-081-0/+1
* [tx-robot] updated from transifexNextcloud bot2020-04-031-3/+3
* [tx-robot] updated from transifexNextcloud bot2020-02-071-1/+1
* [tx-robot] updated from transifexNextcloud bot2020-01-301-3/+3
* [tx-robot] updated from transifexNextcloud bot2020-01-291-1/+1
* [tx-robot] updated from transifexNextcloud bot2019-12-221-0/+10
* [tx-robot] updated from transifexNextcloud bot2019-09-171-17/+1
* [tx-robot] updated from transifexNextcloud bot2019-08-151-2/+2
* [tx-robot] updated from transifexNextcloud bot2019-07-271-2/+2
* [tx-robot] updated from transifexNextcloud bot2019-06-141-9/+9
* [tx-robot] updated from transifexNextcloud bot2019-04-191-12/+12
* [tx-robot] updated from transifexNextcloud bot2019-03-261-1/+0
* [tx-robot] updated from transifexNextcloud bot2019-03-211-7/+0
* [tx-robot] updated from transifexNextcloud bot2018-11-231-14/+2
* [tx-robot] updated from transifexNextcloud bot2018-10-101-16/+16
* [tx-robot] updated from transifexNextcloud bot2018-08-031-1/+1
* [tx-robot] updated from transifexNextcloud bot2018-07-251-1/+1
* [tx-robot] updated from transifexNextcloud bot2018-06-141-3/+3
* [tx-robot] updated from transifexNextcloud bot2018-05-271-2/+2
* [tx-robot] updated from transifexNextcloud bot2018-05-231-1/+1
* [tx-robot] updated from transifexNextcloud bot2018-02-201-2/+31
* [tx-robot] updated from transifexNextcloud bot2018-02-171-1/+89
* [tx-robot] updated from transifexNextcloud bot2018-02-091-0/+129
* [tx-robot] updated from transifexNextcloud bot2016-11-301-161/+0
* [tx-robot] updated from transifexNextcloud bot2016-10-251-3/+3
* [tx-robot] updated from transifexNextcloud bot2016-07-061-8/+0
* [tx-robot] updated from transifexJenkins for ownCloud2016-06-101-2/+2
* [tx-robot] updated from transifexJenkins for ownCloud2016-06-031-14/+12
* [tx-robot] updated from transifexJenkins for ownCloud2016-06-021-1/+1
* [tx-robot] updated from transifexJenkins for ownCloud2016-05-261-1/+6
* [tx-robot] updated from transifexJenkins for ownCloud2016-05-121-5/+5
* [tx-robot] updated from transifexJenkins for ownCloud2016-05-041-44/+44
* [tx-robot] updated from transifexJenkins for ownCloud2016-04-301-24/+24
* [tx-robot] updated from transifexJenkins for ownCloud2016-04-241-12/+14
* [tx-robot] updated from transifexJenkins for ownCloud2016-04-211-4/+4
* [tx-robot] updated from transifexJenkins for ownCloud2016-04-071-0/+2
* [tx-robot] updated from transifexJenkins for ownCloud2016-03-251-1/+5
* [tx-robot] updated from transifexJenkins for ownCloud2016-03-241-5/+4
* [tx-robot] updated from transifexJenkins for ownCloud2016-02-131-0/+1
* [tx-robot] updated from transifexJenkins for ownCloud2016-02-121-1/+0
* [tx-robot] updated from transifexJenkins for ownCloud2016-02-061-0/+1
l relationship between parent and child nodes as follows: </para> <programlisting><![CDATA[ public abstract aspect ParentChildRelationship<P,C> { /** * Parents contain a list of children */ private List<C> P.children; /** * Each child has a parent */ private P C.parent; /** * ensure bi-directional navigation on adding a child */ public void P.addChild(C child) { if (child.parent != null) { child.parent.removeChild(child); } children.add(child); child.parent = this; } /** * ensure bi-directional navigation on removing a child */ public void P.removeChild(C child) { if (children.remove(child)) { child.parent = null; } } /** * ensure bi-directional navigation on setting parent */ public void C.setParent(P parent) { parent.addChild(this); } public pointcut addingChild(P p, C c) : execution(* P.addChild(C)) && this(p) && args(c); public pointcut removingChild(P p, C c) : execution(* P.removeChild(C)) && this(p) && args(c); } ]]></programlisting> <para> Note in the above example how the type parameters <literal>P</literal> and <literal>C</literal> can be used in inter-type declarations, pointcut expressions, and any other member of the aspect type. </para> <para> The example aspect captures the protocol for managing a bi-directional parent-child relationship between any two types playing the role of parent and child. In a compiler implementation managing an abstract syntax tree (AST) in which AST nodes may contain other AST nodes we could declare the concrete aspect: </para> <programlisting><![CDATA[ public aspect ASTNodeContainment extends ParentChildRelationship<ASTNode,ASTNode> { before(ASTNode parent, ASTNode child) : addingChild(parent, child) { ... } } ]]></programlisting> <para> As a result of this declaration, <literal>ASTNode</literal> gains members: </para> <simplelist> <member><literal>List&lt;ASTNode&gt; children</literal></member> <member><literal>ASTNode parent</literal></member> <member><literal>void addChild(ASTNode child)</literal></member> <member><literal>void removeChild(ASTNode child)</literal></member> <member><literal>void setParent(ASTNode parent)</literal></member> </simplelist> <para> In a system managing files and folders, we could declare the concrete aspect: </para> <programlisting><![CDATA[ public aspect FilesInFolders extends ParentChildRelationship<Folder,File> { } ]]></programlisting> <para> As a result of this declaration, <literal>Folder</literal> gains members: </para> <simplelist> <member><literal>List&lt;File&gt; children</literal></member> <member><literal>void addChild(File child)</literal></member> <member><literal>void removeChild(File child)</literal></member> </simplelist> <para>and <literal>File</literal> gains members:</para> <simplelist> <member><literal>Folder parent</literal></member> <member><literal>void setParent(Folder parent)</literal></member> </simplelist> <para>When used in this way, the type parameters in a generic abstract aspect declare <emphasis>roles</emphasis>, and the parameterization of the abstract aspect in the <literal>extends</literal> clause binds types to those roles. This is a case where you may consider departing from the standard practice of using a single letter to represent a type parameter, and instead use a role name. It makes no difference to the compiler which option you choose of course.</para> <programlisting><![CDATA[ public abstract aspect ParentChildRelationship<Parent,Child> { /** * Parents contain a list of children */ private List<Child> Parent.children; /** * Each child has a parent */ private Parent Child.parent; /** * ensure bi-directional navigation on adding a child */ public void Parent.addChild(Child child) { if (child.parent != null) { child.parent.removeChild(child); } children.add(child); child.parent = this; } ... ]]></programlisting> </sect2> </sect1> </chapter>