Skip to content

Package: Name

Name

Coverage

1: package de.fhdw.wtf.common.ast;
2:
3: import de.fhdw.wtf.common.ast.visitor.NameReturnVisitor;
4: import de.fhdw.wtf.common.ast.visitor.NameVisitor;
5: import de.fhdw.wtf.common.ast.visitor.NameVisitorReturnBoolean;
6: import de.fhdw.wtf.common.ast.visitor.NameVisitorReturnName;
7: import de.fhdw.wtf.common.ast.visitor.NameVisitorReturnNameException;
8: import de.fhdw.wtf.common.exception.referencer.InvalidTypeReferenceException;
9: import de.fhdw.wtf.common.token.IdentifierToken;
10: import de.fhdw.wtf.common.token.Token;
11:
12: /**
13: * This class represents either a qualified name({@link QualifiedName}) or an unqualified name({@link UnqualifiedName}).
14: *
15: */
16: public interface Name extends SyntaxObjectInterface {
17:         
18:         /**
19:          * Add the identifierToken to the given hierarchy. Uses dummy-token as lastToken
20:          *
21:          * @param identifierToken
22:          * new token to add.
23:          * @return Name with added identifierToken
24:          */
25:         Name addName(IdentifierToken identifierToken);
26:         
27:         /**
28:          * Add the identifierToken to the given hierarchy.
29:          *
30:          * @param lastToken
31:          * token to use as lastToken for Name
32:          * @param identifierToken
33:          * new token to add.
34:          * @return Name with added identifierToken
35:          */
36:         Name addName(IdentifierToken identifierToken, Token lastToken);
37:         
38:         /**
39:          * Visit-method for the {@link NameVisitorReturnName}-Visitor.
40:          *
41:          * @param v
42:          * : NameVisitorForConcat
43:          * @return : Name.
44:          */
45:         Name visit(NameVisitorReturnName v);
46:         
47:         /**
48:          * Visit-method for the {@link NameVisitor}-Visitor.
49:          *
50:          * @param v
51:          * : NameVisitor.
52:          * @throws InvalidTypeReferenceException
53:          * possible Exception
54:          */
55:         void visit(NameVisitor v) throws InvalidTypeReferenceException;
56:         
57:         /**
58:          * Visit-method for the {@link NameVisitorReturnBoolean}-Visitor.
59:          *
60:          * @param v
61:          * : NameVisitor.
62:          * @return Boolean
63:          */
64:         boolean visit(NameVisitorReturnBoolean v);
65:         
66:         /**
67:          * Visit-method for the {@link NameVisitorReturnNameException}-Visitor.
68:          *
69:          * @param v
70:          * : NameVisitorException.
71:          * @return Name
72:          * @throws InvalidTypeReferenceException
73:          * possible Exception
74:          */
75:         Name visit(NameVisitorReturnNameException<InvalidTypeReferenceException> v) throws InvalidTypeReferenceException;
76:         
77:         /**
78:          * Visit-method for the {@link NameReturnVisitor}-Visitor.
79:          *
80:          * @param v
81:          * Visitor
82:          * @param <X>
83:          * ReturnType
84:          * @return X
85:          */
86:         <X> X visit(NameReturnVisitor<X> v);
87:         
88:         /**
89:          * Concats <code>this</code> with the parameter <code>name</code>. Returns a new Name.
90:          *
91:          * @param name
92:          * : Name.
93:          * @return : Name.
94:          */
95:         Name concat(Name name);
96:         
97:         /**
98:          * This method returns true, if the last added name to <code>this</code> equals the first added part of
99:          * <code>name</code>. False otherwise.
100:          *
101:          * @param name
102:          * : Name.
103:          * @return : boolean.
104:          */
105:         boolean equalsPartial(Name name);
106:         
107:         /**
108:          * Returns the last part of <code>this</code>.<br/>
109:          * If <code>this</code> is an {@link UnqualifiedName} it will return itself.<br/>
110:          * If <code>this</code> is a {@link QualifiedName} it will return the last UnqualifiedName of the QualifiedName.
111:          *
112:          * @return : UnqualifiedName.
113:          */
114:         UnqualifiedName getLastAddedName();
115: }